主題
「勉強会で使いたいのでJenkinsに相乗りさせてほしい」という要望を頂いたので備忘です。
昔は、1人のJenkinsおじさんに頑張ってもらうこと多かったのですが。
最近は、ひと昔前に比べて環境クリーンに&簡単に、Jenkins動かすことが出来るので。
これに取り組みたくなったときの手順をまとめます。
相乗りしない方がよい理由
- 一時利用で作った資源メンテが簡単
- 「何このユーザ。。」や「このジョブ誰の?」みたいなことが無くなる
- 相乗り先の、Jenkins用途への影響を気にする必要なくなる
- 「本番ノンデグ確認ジョブ実行したい。一時利用は、時間制限!」など調整が不要になる
- 相乗りされる側も、する側も嬉しい
- 「本番ノンデグ確認ジョブ実行したい。一時利用は、時間制限!」など調整が不要になる
- Jenkinsバージョンアップが楽
- Dockerイメージのバージョン上げれば完了
- 移行したい資源あれば個別対応は必要
- そもそも…一時利用で、持ち越したい資源、とは…?
- 移行したい資源あれば個別対応は必要
- Dockerイメージのバージョン上げれば完了
手順まとめ時の前提条件
-
公式ガイドはgithub.com jenkinsci/dockerのReadmeを参照しました。
-
docker hubはこちらでした。
- newest tagは以下でした。
jenkins/jenkins:2.414.3-slim-jdk17
- 今回利用したimage tagは以下でした。
jenkins/jenkins:2.414.3-lts-jdk17
- newest tagは以下でした。
-
docker host側の環境情報は以下のとおりでした。
docker host os :
Windows 11 Home
22621.2428
docker info:
Client:
Version: 24.0.6
Server:
Server Version: 24.0.6
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
手順まとめ
2つの観点で、まとめます。
- 「とりあえず動かしてみたい」場合の最小手順
以下の流れで取り組みます。
- Jenkinsのdocker imageをpullする
- Jenkinsのdocker containerをrunする
- Jenkins初回設定Webページにアクセスする
- 初期設定する
- 実行確認:Jenkinsダッシュボードでジョブ作成+ジョブ実行
- 「とりあえず動かせた」以降の気になるポイント
以下を補足します。
- デフォルトから設定値を弄りたい
- 停止した場合に、どうなるか知りたい(ジョブ実行結果は消えるか?)
「とりあえず動かしてみたい」場合の最小手順
Jenkinsのdocker imageをpullする
以下コマンドでdocker imageをpullします。
docker pull jenkins/jenkins:lts-jdk17
Jenkinsのdocker containerをrunする
以下コマンドでdocker containerをrunします。
# コンテナ起動失敗時に、自動で再起動したくない場合は`--restart=on-fairure`を削除。
docker run -p 8080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk17
runした際に、標準出力に、Jenkinsのadmin
ユーザのパスワードが表示されます。
後で使うのでメモします。
忘れた場合は、Jenkinsコンテナ内の以下ファイルにも載っています。
cat /var/jenkins_home/secrets/initialAdminPassword
Jenkins初回設定Webページにアクセスする
docker hostから以下URLにアクセスします。
該当ポートを外部公開して、他の環境からアクセスしたい場合はlocalhost
や8080
を読み替えてください。
http://localhost:8080/
初期設定する
初回設定Webページから、初期設定を行います。
先ほど控えたJenkinsのadmin
ユーザのパスワードを入れます。
プラグイン初期設定の画面が開きます。スクショ割愛。
- 今回は左側(
Install Suggested Plugins
)を選びました。 - 右側(
Select plugins to install
)を選ぶと、お好きなpluginを明示指定して導入できます。
セットアップが完了すると、今ログインしたadmin
以外の管理ユーザ作成を提案されます。
Skip and continue as admin
を選んで、
admin
ユーザでの作業を継続します。
Jenkins URLの設定を確認されます。
今回は、デフォルト値のまま進めます。
Jenkins is ready!
となったら完了です。
Start using Jenkins
ボタンを押しましょう。
Jenkinsおじさんが出迎えてくれます。
実行確認:Jenkinsダッシュボードでジョブ作成+ジョブ実行
Jenkinsおじさんが仕事できることを確認します。
さきほどの画面でCreate a job
をクリックします。
お好きなジョブ名を入れてフリースタイル・プロジェクトのビルド
を選びOK
します。
ジョブ設定画面が表示されます。
スクショ後述してますので、入力前は割愛。
今回は動作確認として「ジョブ実行した直後のカレントパスを表示」してみます。
Build Steps
からビルド手順の追加
を選びシェルの実行
を設定します。
出てきたフォームにpwd
コマンドを入れます。
注意点
docker container側のOS上で、ジョブ実行されます。
今回docker host側はWindowsですが、
docker container側はLinuxなのでシェルの実行
でありpwd
です。
画面下部から保存
ボタンをクリック。
ジョブ設定を保存します。
以下の画面に遷移します。
続けて、いまほど作成したジョブを実行します。
同画面のビルド実行
を選びます。
左下に、ビルド履歴が表示されます。
SUCCESS
で実行終了していれば正常動作です。
ビルド履歴の#1
をクリックして、実行結果を確認します。
以上です。
「とりあえず動かせた」以降の気になるポイント
以下を補足します。
- デフォルトから設定値を弄りたい
- コンテナ停止した場合に、どうなるか知りたい(ジョブ実行結果は消えるか?)
デフォルトから設定値を弄りたい
以下の手順で取り組みます。
- Jenkinsのdocker imageをベースに、groovyスクリプトとDockerfile介して新規DockerImageを作成
- 上記DockerImageからdocker containerをstartする
公式ガイド該当箇所は以下です。
executors
(=Jenkinsジョブ並行実行の最大数)デフォルト設定値2
を、書き換える事例で示しています。
設定を変えるとJenkins設定ファイルが書き換わります。
ファイルパスは、docker container内の以下です。
/var/jenkins_home/config.xml
コンテナ停止した場合に、どうなるか知りたい(ジョブ実行結果は消えるか?)
docker containerのボリューム内にデータが残ります。
公式ガイド該当箇所は以下です。
コンテナ削除時に、データを永続化したい場合は
docker host側フォルダを適宜、docker containerにマウントします。