1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DockerコンテナでJenkinsを起動する手順

Last updated at Posted at 2023-10-27

主題

「勉強会で使いたいのでJenkinsに相乗りさせてほしい」という要望を頂いたので備忘です。

昔は、1人のJenkinsおじさんに頑張ってもらうこと多かったのですが。

最近は、ひと昔前に比べて環境クリーンに&簡単に、Jenkins動かすことが出来るので。
これに取り組みたくなったときの手順をまとめます。

相乗りしない方がよい理由

  • 一時利用で作った資源メンテが簡単
    • 「何このユーザ。。」や「このジョブ誰の?」みたいなことが無くなる
  • 相乗り先の、Jenkins用途への影響を気にする必要なくなる
    • 「本番ノンデグ確認ジョブ実行したい。一時利用は、時間制限!」など調整が不要になる
      • 相乗りされる側も、する側も嬉しい
  • Jenkinsバージョンアップが楽
    • Dockerイメージのバージョン上げれば完了
      • 移行したい資源あれば個別対応は必要
        • そもそも…一時利用で、持ち越したい資源、とは…?

手順まとめ時の前提条件

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つの観点で、まとめます。

  • 「とりあえず動かしてみたい」場合の最小手順

以下の流れで取り組みます。

  1. Jenkinsのdocker imageをpullする
  2. Jenkinsのdocker containerをrunする
  3. Jenkins初回設定Webページにアクセスする
  4. 初期設定する
  5. 実行確認:Jenkinsダッシュボードでジョブ作成+ジョブ実行
  • 「とりあえず動かせた」以降の気になるポイント

以下を補足します。

  1. デフォルトから設定値を弄りたい
  2. 停止した場合に、どうなるか知りたい(ジョブ実行結果は消えるか?)

「とりあえず動かしてみたい」場合の最小手順

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にアクセスします。
該当ポートを外部公開して、他の環境からアクセスしたい場合はlocalhost8080を読み替えてください。

http://localhost:8080/

初期設定する

初回設定Webページから、初期設定を行います。
先ほど控えたJenkinsのadminユーザのパスワードを入れます。
unlock.png

プラグイン初期設定の画面が開きます。スクショ割愛。

  • 今回は左側(Install Suggested Plugins)を選びました。
  • 右側(Select plugins to install)を選ぶと、お好きなpluginを明示指定して導入できます。

プログレスバーが出るので待ちます。
getting started.png

セットアップが完了すると、今ログインしたadmin以外の管理ユーザ作成を提案されます。
Skip and continue as adminを選んで、
adminユーザでの作業を継続します。
create first admin user.png

Jenkins URLの設定を確認されます。
今回は、デフォルト値のまま進めます。
instance configuration.png

Jenkins is ready!となったら完了です。
Start using Jenkinsボタンを押しましょう。
Jenkins is ready.png

Jenkinsおじさんが出迎えてくれます。

jenkins dashboard.png

実行確認:Jenkinsダッシュボードでジョブ作成+ジョブ実行

Jenkinsおじさんが仕事できることを確認します。

さきほどの画面でCreate a jobをクリックします。

ジョブ名入力.png
お好きなジョブ名を入れてフリースタイル・プロジェクトのビルドを選びOKします。

ジョブ設定画面が表示されます。
スクショ後述してますので、入力前は割愛。

今回は動作確認として「ジョブ実行した直後のカレントパスを表示」してみます。
Build Steps からビルド手順の追加を選びシェルの実行を設定します。

出てきたフォームにpwdコマンドを入れます。

ジョブ設定.png

注意点
docker container側のOS上で、ジョブ実行されます。
今回docker host側はWindowsですが、
docker container側はLinuxなのでシェルの実行でありpwdです。

画面下部から保存ボタンをクリック。
ジョブ設定を保存します。

以下の画面に遷移します。

ビルド実行.png

続けて、いまほど作成したジョブを実行します。
同画面のビルド実行を選びます。

左下に、ビルド履歴が表示されます。
SUCCESSで実行終了していれば正常動作です。

ビルド実行結果.png

ビルド履歴の#1をクリックして、実行結果を確認します。

ビルド実行結果の確認.png

以上です。

「とりあえず動かせた」以降の気になるポイント

以下を補足します。

  • デフォルトから設定値を弄りたい
  • コンテナ停止した場合に、どうなるか知りたい(ジョブ実行結果は消えるか?)

デフォルトから設定値を弄りたい

以下の手順で取り組みます。

  1. Jenkinsのdocker imageをベースに、groovyスクリプトとDockerfile介して新規DockerImageを作成
  2. 上記DockerImageからdocker containerをstartする

公式ガイド該当箇所は以下です。
executors(=Jenkinsジョブ並行実行の最大数)デフォルト設定値2を、書き換える事例で示しています。

設定を変えるとJenkins設定ファイルが書き換わります。
ファイルパスは、docker container内の以下です。

/var/jenkins_home/config.xml

コンテナ停止した場合に、どうなるか知りたい(ジョブ実行結果は消えるか?)

docker containerのボリューム内にデータが残ります。
公式ガイド該当箇所は以下です。

コンテナ削除時に、データを永続化したい場合は
docker host側フォルダを適宜、docker containerにマウントします。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?