留意事項
本手順を実施する場合は、次のように読み替えること.
・アカウント名の「robozushi10
」を各ユーザのアカウントにする
・ホストIP「192.168.10.115
」を各ユーザの IP やホスト名にする
概要
前回 からの発展で、次の構成の Jenkins on Docker のセットアップ手順である.
// 私の場合は Slave が 3つあれば間に合うことが多い
一度構築すれば、他のホスト上でも一部書き換えるだけ※ でセットアップができる.
(※ ホストIP の書き換えのみ)
役割 | ホスト側ポート | コンテナ側ポート | 補足 |
---|---|---|---|
Jenkins Master | 43080 | 43080 | |
Jenkins Slave(1) | - | - | Docker on Docker 可能である |
Jenkins Slave(2) | - | - | Docker on Docker 可能である |
Jenkins Slave(3) | - | - | Docker on Docker 可能である |
手順
1. 前回起動させたコンテナおよびイメージを一掃する
$ docker-compose down --rmi all --volumes --remove-orphans
このとき、ホスト上から見たデータは次のようになっている
.
|-- PV
| |-- jenkinsmaster
| | `-- jenkins_home
| | |-- 以下略
| `-- jenkinsslave1
| |-- agent
| |-- agent.jar
| |-- remoting
| `-- secret-file
`-- docker-compose.yml
2. 素の Jenkins on Docker を起動させる
1. docker-compose.yml を変更する
前回 のコードに対して、次の変更を加える.
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -20,3 +20,21 @@ services:
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker:ro
command: /bin/bash -c 'java -jar /home/jenkins/agent.jar -jnlpUrl http://jenkinsmaster:43080/computer/slave1-local/jenkins-agent.jnlp -secret @/home/jenkins/secret-file -workDir "/home/jenkins"'
+ jenkinsslave2:
+ container_name: myjenkinsslave2
+ user: root
+ image: jenkinsci/slave
+ volumes:
+ - ./PV/jenkinsslave2:/home/jenkins
+ - /var/run/docker.sock:/var/run/docker.sock
+ - /usr/bin/docker:/usr/bin/docker:ro
+ command: /bin/bash -c 'java -jar /home/jenkins/agent.jar -jnlpUrl http://jenkinsmaster:43080/computer/slave2-local/jenkins-agent.jnlp -secret @/home/jenkins/secret-file -workDir "/home/jenkins"'
+ jenkinsslave3:
+ container_name: myjenkinsslave3
+ user: root
+ image: jenkinsci/slave
+ volumes:
+ - ./PV/jenkinsslave3:/home/jenkins
+ - /var/run/docker.sock:/var/run/docker.sock
+ - /usr/bin/docker:/usr/bin/docker:ro
+ command: /bin/bash -c 'java -jar /home/jenkins/agent.jar -jnlpUrl http://jenkinsmaster:43080/computer/slave3-local/jenkins-agent.jnlp -secret @/home/jenkins/secret-file -workDir "/home/jenkins"'
2. docker-compose up -d を実行する
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------------------
myjenkinsmaster /sbin/tini -- /usr/local/b ... Up 0.0.0.0:43000->43000/tcp, 0.0.0.0:43080->43080/tcp, 50000/tcp, 8080/tcp
myjenkinsslave1 /bin/bash -c java -jar /ho ... Up
myjenkinsslave2 /bin/bash -c java -jar /ho ... Exit 1
myjenkinsslave3 /bin/bash -c java -jar /ho ... Exit 1
3. WEB-UI で localhost:43080 にログインして「slave2-local」を追加登録する
1. 「slave2-local」を登録する
下記 URL にアクセスして、下図の要領で登録する.
http://localhost:43080/computer/new
2. パラメータを設定する
3. 「slave3-local」のパラメータを控えておく
4. ホストで次を実行する
上記で表示されたシークレットを、./PV/jenkinsslave2/secret-file として書き出す.
$ cat <<'EOL' | sudo tee PV/jenkinsslave2/secret-file
ca5900b9f1a887405b35d7c52410652326ceb896d4c5b0033c269c43940ba018
EOL
5. Slave上に agent.jar を配置する
ホストで次の操作をして ./PV/jenkinsslave2/agent.jar
として配置する.
$ sudo wget http://localhost:43080/jnlpJars/agent.jar -O PV/jenkinsslave2/agent.jar
4. WEB-UI で localhost:43080 にログインして「slave3-local」を追加登録する
上記 2 と同じ要領で「slave3-local」を登録する.
5. コンテナ群を再起動する
$ docker-compose restart
Restarting myjenkinsmaster ... done
Restarting myjenkinsslave1 ... done
Restarting myjenkinsslave3 ... done
Restarting myjenkinsslave2 ... done
次のように表示されていれば OK.
$ docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------------
myjenkinsmaster /sbin/tini -- /usr/local/b ... Up 0.0.0.0:43000->43000/tcp, 0.0.0.0:43080->43080/tcp, 50000/tcp, 8080/tcp
myjenkinsslave1 /bin/bash -c java -jar /ho ... Up
myjenkinsslave2 /bin/bash -c java -jar /ho ... Up
myjenkinsslave3 /bin/bash -c java -jar /ho ... Up
5. Slave 2台が起動していることを確認する
以上
参考サイトおよび書籍
URL |
---|
https://www.slideshare.net/miyajan/jenkins-61133952 |
https://qiita.com/sugiyasu-qr/items/85a1bedb6458d4573407 |
[改訂第3版]Jenkins実践入門 |