はじめに
今勉強している「たった1日で基本が身につく!Docker/kubernetes超入門」の6章ではじめてJenkinsを利用して、色々と躓いたので、解決方法と一緒にまとめていきます。
書籍に若干の説明不足や2021年8月現在には想定通りにいかない箇所があったので、誰かの参考になればと思います。
問題1
Jenkinsのコンテナを起動した後に、初回起動をしてプラグインをインストールすると「OWASP Makup Fromatter」と「Mailer」以外がすべてインストールエラーになりました。
以下はネットから同じような画像をみつけてきたものです。私はMailerもインストールできていました。
解決方法
これはDockerイメージが古いために起きています。
このまま先に進めることはできますが、先に進めてもJob作成でパイプラインが作れません。
もちろん追加でプラグインをインストールすることもできませんでした。
Dockerfileの内容を変える必要があります。
From jenkins/jenkins:2.190.1-centos
1行目の内容を以下に変更します。
From jenkins/jenkins:centos7
もとのイメージは2年前のイメージであまり使われていないようなので変更しました。
また、私の環境ではちょくちょくエラーが起きてたのですが、イメージ変更して起きたのか?と思いましたが、ネットワークの問題でうまくインストールができなかったりしていたようでした。なんどかbuildしていくとキャッシュが効いてインストールできるようになりました。
問題2
1度Jecnkins
コンテナを起動してしまうと、一番初めのパスワードの設定の画面に行くことができません。
(ここにいってパスワード設定したいのに、ログイン画面にいってしまう、この画面になったときにタブを消してしまいサインイン設定していないのにログイン画面に行ってしまって困った)
解決方法
パスワードを忘れたときの対処法がありました。
まずはJenkins
コンテナに入ります。
$ docker-compose exec -it jenkins sh
そのあと、以下のフォルダに移動します。
$ cd /var/lib/jenkins_home
jenkins_homeはdocker-compose.ymlでマウントをその名前にしています。jenkinsの可能性もあります。
本書通りならこれで大丈夫です。
vi config.xml
Viでxmlファイルのを以下のように修正します。
<useSecurity>true</useSecurity>
↓
<useSecurity>false</useSecurity>
これで、パスワードなしでログインできるようになります。
そのあと、アクセスしてパスワードの再設定ができます。
問題3
Jenkinsコンテナを動かしている仮想環境で、ほかの仮想環境2つのSSH接続を行った後の以下のコードでエラーとなります。
$ docker container exec -ti jenkins ssh root@192.168.1.86
(中略)
# この次でエラー
$ docker container exec -it jenkins ssh docker login
このエラー行を飛ばしてしまうと、パイプラインのPre CheckでDockerHubにアクセスできずパイプラインがエラーになります。
解決方法
ここはかなりコードが間違っています。以下が正しいです。
$ docker container exec -it jenkins ssh root@192.168.1.86
(中略)
$ exit
$ docker container exec -it jenkins docker login
これでDockerHubのログインが可能です。
問題4
この問題は私だけかもしれませんが、いろいろやっていたらJenkinsにアクセスできなくなりました。
ip a
で調べたIPにアクセスしているのですが、なぜかアクセスができません。
(前までできてたのに......)
Jenkinsの仮想環境のIPもなぜか変わっていました。
そのあと、仮想環境を再起動したりしてみましたが、アクセスできず。
Dockerfileを元に戻しましたが、ダメでした。
解決方法
パソコン自体を再起動したら治りました。
IPも最初のものに変わっていました。再起動試してみる価値ありですね。
ちなみにJenkinsfileの環境変数の設定も忘れないようにしましょう。
おわりに
1単元1時間というテーマですが、6章は5時間ほどかかりました。
おかげですこしJenkinsと親しくなれた気がします。いままで触ったこともなかったのでデプロイやパイプラインについてなんとなくわかるようになったのでやった価値はありました。
やっと次はKubernetesです。待ってました。