留意事項
本手順を実施する場合は、次のように読み替えること.
・アカウント名の「robozushi10
」を各ユーザのアカウントにする
・ホストIP「192.168.10.115
」を各ユーザの IP やホスト名にする
概要
次の構成の Jenkins on Docker のセットアップ手順である.
一度構築すれば、他のホスト上でも一部書き換えるだけ※ でセットアップができる.
(※ ホストIP の書き換えのみ)
役割 | ホスト側ポート | コンテナ側ポート | 補足 |
---|---|---|---|
Jenkins Master | 43080 | 43080 | |
Jenkins Slave(1) | - | - | Docker on Docker 可能である |
手順
1. 素の Jenkins on Docker を起動させる
1. docker-compose.yml を作成する.
version: "3"
services:
jenkinsmaster:
container_name: myjenkinsmaster
user: root
image: jenkins/jenkins:latest
environment:
- JENKINS_OPTS="--httpPort=43080"
ports:
- 43080:43080
- 43000:43000
volumes:
- ./PV/jenkinsmaster/jenkins_home:/var/jenkins_home
jenkinsslave1:
container_name: myjenkinsslave1
user: root
image: jenkinsci/slave
volumes:
- ./PV/jenkinsslave1:/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/slave1-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
2. WEB-UI で localhost:43080 にログインする
1. 初期ログインパスワードを入手する
$ docker-compose exec jenkinsmaster bash -c 'cat /var/jenkins_home/secrets/initialAdminPassword'
87e4804b07124cbf934d3c9346378de2
2. 推奨プラグインをインストールする
300MB ほどディスクを喰うが仕方ない.
3. 管理者アカウントを作成する
「Create First Admin User」で管理者アカウントを作る.
今回は次のアカウントを作成した.
アカウント ... root
パスワード ... rootroot
3. 開発用アカウントを作成する
1. アカウント作成
http://localhost:43080/securityRealm/addUser にアクセスして開発用アカウントを作成する.
今回は次のアカウントを作成した.
アカウント ... robozushi10
パスワード ... robozushi10
2. APIキーを作成する
下記にアクセスして「APIトークン」を「生成」してから「保存」する.
http://localhost:43080/user/robozushi10/configure
「APIトークン」生成したら控えておくこと.
115055bf04f7f0508abacc987625165188
4. Jenkins Master の設定をする
1. Jenkins URL を設定する
「Jenkinsの管理
」→「システムの設定
」より、
ホストの IPアドレス「192.168.10.115」を設定する.
5. 新規ノード「slave1-local」を立ち上げる
1. 「slave1-local」を作成する
http://localhost:43080/computer/new にアクセスして、ノード名で「slave1-local」でノードを作成する.
このとき次のようにする.
項目 | 値 | 補足 |
---|---|---|
リモートFSルート | 「/home/jenkins」と入力する | docker-compose.yml での volumes と合わせている |
ラベル | 「slave1」と入力する | |
用途 | 「このマシンを特定ジョブ専用にする」を選択する | |
起動方法 | 「Launch agent by connecting it to the master」を選択する |
2. 「slave1-local」のパラメータを控えておく
作成したノード「slave1-local
」の状態確認ページ(下記) を開いて起動パラメータを控える.
http://localhost:43080/computer/slave1-local/
次のような情報が表示されているので控えておく.
echo 93d7204e5036a10274696a371cb5531747056ec637d50b1aa7691217e8a5ee9b > secret-file
java -jar agent.jar -jnlpUrl http://localhost:43080/computer/slave1-local/jenkins-agent.jnlp -secret @secret-file -workDir "/home/jenkins"
3. Agents のポート番号を 43080 へと変更する
下記「グローバルセキュリティの設定」より、
「Agents
」のポート番号を「50000
」から「43000
」へと変更する.
http://localhost:43080/configureSecurity/
4. ホストで次を実行する
上記 2 で表示されたシークレットを、./PV/jenkinsslave1/secret-file
として書き出す.
$ cat <<'EOL' | sudo tee PV/jenkinsslave1/secret-file
93d7204e5036a10274696a371cb5531747056ec637d50b1aa7691217e8a5ee9b
EOL
5. Slave上に agent.jar を配置する
ホストで次の操作をして ./PV/jenkinsslave1/agent.jar
として配置する.
$ sudo wget http://localhost:43080/jnlpJars/agent.jar -O PV/jenkinsslave1/agent.jar
6. Jenkins を再起動させる
$ sudo docker-compose restart
以上.
デバッグ
Master と Slave が繋がらない場合
ホストで次のように実行して接続可能かチェックをすれば良い.
$ java -jar PV/jenkinsslave1/agent.jar -jnlpUrl http://localhost:43080/computer/slave1-local/jenkins-agent.jnlp -secret 93d7204e5036a10274696a371cb5531747056ec637d50b1aa7691217e8a5ee9b
参考サイト
URL |
---|
https://www.slideshare.net/miyajan/jenkins-61133952 |
https://qiita.com/sugiyasu-qr/items/85a1bedb6458d4573407 |
[改訂第3版]Jenkins実践入門 |