Help us understand the problem. What is going on with this article?

JCasC (jenkins configuration as code) の構築

More than 1 year has passed since last update.

jenkins のコード化プラグイン "jenkins configuration as code"について、しばらく検証していたのをまとめました。

JCasCとは

jenkinの設定をコード化し、別の環境でも同じ設定、プラグイン、ジョブを再構築するプラグインです。
GUIによる設定がメインになっているjenkinsにおいて、属人化を無くす可能性が高いです。

Jenkins Configuration as Code:最初の一歩(ママ見て、すごいでしょ)
github.com/jenkinsci/configuration-as-code-plugin

注意点

今回は、事前に用意したdockerファイル、jenkinsファイルでjenkinsプロジェクトが自動構築される様に用意しました。
jenkinsの本来の利用は、ビルド、テストの自動化ですが、今回、もともとの利用用途がジョブの実行である案件であった為、
あくまで、jenkinsのコード化、ジョブの生成の自動化に主眼が置かれています。
その為、gitへのpushをトリガーにした設定等は、頑張っておりません。

JCasC's sample

github.com/biz-nakashima001/jcasc

事前用意ファイル

  • /var/deploy/secrets/adminUser
  • /var/deploy/secrets/adminpw

jenkinログイン用 アドミンユーザー名、パスワードをそれぞれ用意しておきます。


実行コマンド

docker-compose up --build

永続化する場合は以下

docker-compose up --build -d

dockerイメージのダウンロード後、
プラグインダウンロード、インストール、jenkinsの構築、設定を経て、
jenkinsプロジェクトを起動します。

スクリーンショット 2019-03-08 15.54.31.png


jenkinsアクセス

自機のブラウザから、locahost:80でアクセス出来ます。
ログインは事前用意ファイルで設定した内容で可能です。

※二回目以降実行時は、後述のその他コマンドも参考のこと。


調整対象ファイル

  1. ./master/Dockerfile
  2. ./master/plugin_extra.txt
  3. ./docker-compose.yml
  4. ./jenkins.yaml

1. ./master/Dockerfile

元となるjenkinsイメージの指定、環境変数の定義や、jenkinsプラグイン適用の為の処理を記述しています。

2. ./master/plugin_extra.txt

適用されるjenkinsプラグインの一覧を記述しています。

※ jenkins側にもこの機能はあるが、今のところ動作が安定しておらず、一旦は課題とし、今今はDocker側でインストールすることとする。

3. ./docker-compose.yml

docker-compose コマンド実行時の構成を管理します。利用ポート、事前用意ファイルのパス、dockerのvolume設定等。

4. ./jenkins.yaml

JCasCのメインファイルになります。こちらに記載された内容を読み込むことで、各種設定やジョブの自動構築が行われます。

今回のサンプルの様に、dockerと絡めて1ステップで新規構築する方法の他、既存のjenkins(jcascプラグイン適用済)に展開することも可能です。


その他コマンド

初回以降、実行ケースによって実施前の準備が異なるので、関連するコマンドは列記します。

1.Dockerコンテナ ステータス確認

docker ps -a

2.Dockerコンテナ 停止

docker stop {コンテナID}

3.Dockerボリューム 一覧確認

docker volume ls

4.Dockerボリューム 削除

docker volume rm {イメージID}

5.不要イメージ/コンテナ一括削除

docker system prune

6.Dockerイメージ 一覧確認

docker image ls

7.Dockerイメージ 削除

docker image rm {ボリュームID}

jenkins.yamlを修正したので、jenkinsに反映したい。

  • 実行コマンドを再度実行します。

dockerボリュームを削除して、もう一度jenkinsを再構築し直したい。

  1. 1.Dockerコンテナ ステータス確認
  2. 2.Dockerコンテナ 停止
  3. 3.Dockerボリューム 一覧確認
  4. 4.Dockerボリューム 削除 (上手くいかない場合、先に5.不要イメージ/コンテナ一括削除)

実行コマンドを再度実行します。

dockerイメージのダウンロードからやり直す場合。

上記に加えて、下記を実施します。
- 6.Dockerイメージ 一覧確認
- 7.Dockerイメージ 削除

実行コマンドを再度実行します。


コード化後 可能なこと

ユーザ

  • アドミンユーザ自動登録
  • 任意のユーザ自動登録

プラグイン

  • 自動インストール(docker利用)   ### ジョブ
  • ソースの外出し

(通常ジョブ)
- 定期実行
- 完了後、失敗後のslack通知

(pipelineジョブ)
- 定期実行
- pipelineソースのgithub(public)からの取得
- pipelineから別のpipelineジョブの呼び出し


Jenkins コード化後出来ていないこと

ユーザ

  • 詳細情報の設定(メールアドレス等)

プラグイン

  • 自動インストール(jenkinsファイル利用)

ジョブ

  • リモート起動
  • githubのpushトリガー連携

Notice !

This source is based on JCasC's sample.

https://github.com/Praqma/praqma-jenkins-casc

https://www.kaizenprogrammer.com/entry/2018/09/23/030646

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした