Jenkinsを勉強する - Jenkins構築からビルドまで
はじめに
久しぶりの投稿です。
個人的な話ですが、、、新しい現場に行くことになり知識不足だなと感じました。
そのため勉強すると共に自分用の備忘録として残します。
勉強の対象はタイトルに記載している通り Jenkins です。
JenkinsはDockerを使って構築します。
作業環境
- OS
- macOS Big Sur(ver11.5.2)
- Docker
- 20.10.22, build 3a2c30b
今回はDocker上にJenkinsを建てるので、macOSのバージョンが古くても問題なし。
※Dockerをインストールする手順は省きます
- 20.10.22, build 3a2c30b
Jenkinsのイメージを取得する
DockerHubにある Jenkinsの公式イメージ を使います。
とりあえず、最新版を取得します。
$ docker pull jenkins/jenkins
docker run
で指定していきなりコンテナを起動しても大丈夫です。
取得したイメージは以下のコマンドで確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins latest f16216f97fcb 8 days ago 467MB
ちなみにイメージが置かれているディレクトリですが
私はDesktop版を使っているため、Preferences > Resources > Advanced で確認できました。
(イメージが不要になったら docker rmi
もしくはDesktop版から削除が出来るため、ファイルの場所はそこまで気にする必要がないです)
コンテナ起動
docker run
でコンテナを起動することができます
※オプションの意味を知りたい方はご自身で調べてください
$ docker run --name jenkins -p 8080:8080 -p 50000:50000 -v {workspace}/{dir_name}:/var/jenkins_home jenkins/jenkins
-v
だけ軽く説明しますが、ローカルのディレクトリをコンテナ内にマウントさせることができます。
これを行うことで、コンテナを起動する際にここのファイルが読み込まれるため、起動する度に初期セットアップをしなくて済みます。
コンテナ内のJenkinsのワークスペースは /var/jenkins_home
のようです。
実行後に、以下のような出力が出ていれば起動しています。
(バックグラウンドで起動していないため、コンソールに出力されています)
Running from: /usr/share/jenkins/jenkins.war
~ 省略 ~
Please use the following password to proceed to installation:
40393b065db84378bc2f8b40bc4bafd6
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
~ 省略 ~
初回セットアップ時に必要な、パスワードが出力されているので控えましょう。
もしくはマウントしたディレクトリに上記のファイルが出力されているので、中身を確認してください。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1abb6e45107 jenkins/jenkins "/usr/bin/tini -- /u…" 17 minutes ago Up 17 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
docker run
したコンソールは入力を受け付けない状態になっているので、コンソールをもう一つ出して確認してみてください。
STATUSがUpになっていれば起動しています。
Jenkinsにログインする
Jenkinsが起動している状態であれば、Webブラウザからアクセスが可能です。
ローカル上に構築しているため、以下でアクセスが可能です。
http://localhost:8080/
先ほどのパスワードを入力して、「Continue」をクリックします。
合っていれば、カスタマイズのページに遷移するので、プラグインをインストールしましょう。
「Install suggested plugins」でいいと思います。(どのみち後で自由にいじれます)
出力されていたログを見たら、約8分かかってました
2023-02-17 17:16:54.876+0000 [id=76] INFO h.m.UpdateCenter$CompleteBatchJob#run: Completed installation of 83 plugins in 7 min 48 sec
Adminの情報は適当に入力してください。
勉強をするための環境なのでスキップしがちですが、、、ユーザー管理やロール管理の設定を行いたいので設定しておきます。
ローカル環境なのでそのままにします。
AWSとかに構築するときは、DNS系のサービスにインスタンスのパブリックIPアドレス(EIPでも)を登録しておけば、好きなドメインでアクセス出来そうですね。
ということで無事にアクセスまで出来ました。
作業を一時中断する
ローカルで動作しているので、PCを終了させたらコンテナは停止します。
docker stop
を使って正常にコンテナを停止してあげましょう。
$ docker stop jenkins
jenkins
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1abb6e45107 jenkins/jenkins "/usr/bin/tini -- /u…" 46 minutes ago Exited (143) 2 minutes ago jenkins
STATUS が Exited になっているので停止しました。なのでJenkinsにアクセスしようとしてもページは表示されません
作業を再開する
勉強の続きやるかーって感じで、コンテナを起動してあげましょう。
$ docker start jenkins
jenkins
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1abb6e45107 jenkins/jenkins "/usr/bin/tini -- /u…" 50 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
STATUS が Up になりました。
これでJenkinsにアクセスして、ログイン画面が表示されればOKです。
Jenkinsさん
ダンディーですね〜。
ジョブを登録してビルドしてみる
※Jenkinsのバージョンが 2.375.3 でのUIになります。
ジョブの作成
ファイルを作るジョブでも作ってビルドしてみます。
「新規ジョブ作成」をクリックします。
ジョブ名は用途に合わせて設定しましょう。
ビルドの種類?は「フリースタイル・プロジェクトのビルド」を選んでおきます。
ジョブが作成できました。
General
ジョブの一般的な設定を行うセクションです。
今回はパラメータに入力した値をファイル名に使いファイルを作りたいので、パラメータを設定します。
ビルドのパラメータ化
> パラメータの追加
> 文字列
の順にクリックすると
以下のようなフォームが表示されます。
今回は以下のように設定しました。
- 名前
file_name
- デフォルト値
jenkins_test.txt
- 説明
作成するファイル名を入力してください。
Build Steps
ビルドで何をさせるかを設定するセクションです。
今回はシェルでファイルを作成したいと思います。
(色々な設定が出来るので、別で記事を作成できたらと思います)
「Build Steps」があるので、ビルド手順の追加
> シェルの実行
の順にクリックします。
すると以下のフォームが表示されます。
先ほど設定したパラメータを受け取りファイルを作成するスクリプトを書きます。
今回は以下のように設定しました。
#!/bin/bash
touch ${file_name}
設定したら、保存
をクリックします。
保存が終わるとジョブの画面になルので、パラメータ付きビルド
をクリックします。
ビルド
をクリックして実行しましょう。
画面左下にビルド履歴が表示されており、そこに実行したジョブの履歴が表示されていきます。
チェックマーク
をクリックすると、コンソール出力
の画面に遷移します。
#{number}
や 日付
をクリックすると、ビルドの状態
の画面に遷移します。
作成されたファイルを確認する
今回はファイル名しか指定しなかったため、実行したジョブの workspace にファイルが作られています。コンソール出力の画面に表示されている以下がそうです。
Building in workspace /var/jenkins_home/workspace/create_file
Webブラウザからは、ジョブのワークスペースをクリックすることで確認ができます。
ローカルからもマウントしてコンテナを作ったため確認ができます。
$ ls workspace/create_file/jenkins_test.txt
workspace/create_file/jenkins_test.txt
コンテナに入って確認したい場合は、以下を試してください。
$ docker exec -it jenkins /bin/bash
jenkins@f1abb6e45107:/$
jenkins@f1abb6e45107:/$ ls /var/jenkins_home/workspace/create_file/jenkins_test.txt
/var/jenkins_home/workspace/create_file/jenkins_test.txt
jenkins@f1abb6e45107:/$ exit
ということで、ファイルを作成するジョブの作成と動作確認が出来ました。
今回の内容的には、切りがよいためこの辺で終わりたいと思います。
Dockerを久しぶりに使ったので、良い時間になりました。
次は、ユーザー管理の記事でも書きたいと思います。それでは。
Discussion