dockerでjenkins構築(2020年05月時点)


経緯

こちらの本の通りに進めていたところプラグインのインストール時、ならびにjenkinsのmaster-slave間でssh接続でエラーが出てしまいました。
Docker/Kubernetes 実践コンテナ開発入門
いくつかのQiita記事でも取り上げてありましたが、2020年現在ではどの情報でも動かなかったため備忘録として記述します。

プラグインのインストールエラー解消

jenkinsはプラグインインストールが失敗していても使うことができますが、
slave01を追加しようとすると認証エラーが出てしまっていました。
こちらの記事で丁寧に解説していただいていますが、私が持っている本では改定が入っており、
すでにこの方の記事の状態のサンプルコードが書かれていました。
参考:
https://qiita.com/_ainosh_/items/04992adbab8502e2ed9e

改定後のサンプルコードでも古い状態だったため以下のように修正。
その他の手順は先の記事を参考にしました。
※失敗したjenkinsの情報が残っていたりしてよくわからなくなるので、jenkins_homeのディレクトリ削除、イメージ削除も行なっていました。

docker-compose.yml
version: "3"
services:
  master:
    container_name: master
#   2020/05時点でjenkinsci/jenkinsはDEPRECATEDとなっておりいくつかのプラグインがエラー
#   image: jenkinsci/jenkins:2.142-slim
    image: jenkins/jenkins:latest #この時点の最新は2.235でした
    ports:
      - 8080:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home
    links:
      - slave01

  slave01:
    container_name: slave01
#   2020/05時点で上記だけだとうまく行かなかったのでこちらも変更
#   image: jenkinsci/ssh-slave
    image: jenkins/ssh-slave:latest
    environment:
     - JENKINS_SLAVE_SSH_PUBKEY=

jenkinsのssh接続でエラー(javaがない)

プラグインのインストールが全て成功したので改めてslave01を追加しましたがエラーでうまく行かず。
内容からすると最初出ていた認証エラーは解消していましたが今度はjavaがないというエラーが出ていました。

こちらを参考にしました。一部記述のコマンドでは場所がわからなかったのでコマンドを変えています。
参考:https://qiita.com/michi-michi/items/b1835d6e89856643b65a

##コンテナの中のbashに入ります
docker exec -it slave01 bash

##javaの環境変数を確認
root@xxxxx:xx# echo $JAVA_HOME
/usr/local/openjdk-8

あとは先ほどの記事の通りに、slave01の設定にjavaの環境変数を追記。