組織は、ビルドとテストプロセスを自動化するためにJenkinsを採用することが増えており、Jenkinsジョブを手動で管理することが困難になっています。幸いなことに、Jenkins DSLプラグインを使用すると、ドメイン固有言語(DSL)の構文でJenkinsジョブを定義することができます。
Jenkins DSLを使用すると、ジョブをバージョン管理システムに保存したり、他のユーザーと共有したり、テンプレートから新しいジョブを生成したりすることが可能になります。そして、このチュートリアルでは、Jenkins DSLプラグインを活用してアプリケーション開発の自動化を支援する方法を学びます。
詳細は続きを読んで、ジョブを面倒な手順でJenkinsのUIをクリックする必要がなくなります!
前提条件
このチュートリアルは実践的なデモンストレーションです。一緒に進めるためには、以下のものが必要です。
- A Linux machine – This guide uses Ubuntu 20.04.
- パイプライン:GroovyはGroovyコードを直接実行できる能力を提供します。
Jenkins DSLプラグインのインストール
ジョブ間の一貫性を維持することは難しいかもしれませんが、Jenkins DSLプラグインはこの問題を解決します。どのようにして?ジョブをプログラム形式で、人間が読めるファイルで定義できるようにすることで。
ただし、ジョブを作成する前に、まずJenkins DSLプラグインをインストールする必要があります。
1. JenkinsサーバーにSSHして、次のコマンドを実行して、必要なJavaのバージョンがインストールされていること、およびjenkinsサービスが実行されていることを確認します。
以下と同様の出力が表示された場合は、Jenkins DSLプラグインをインストールする準備が整っています。

2. 次に、お気に入りのウェブブラウザを開き、http://your_server_ip:8080/pluginManager/available に移動します。your_server_ip:8080 をお使いのJenkinsサーバーの実際のIPアドレスとポート番号に置き換えてください。
3. 最後に、以下の手順でJenkins DSLプラグインをインストールします:
- 以下のように、右上の検索ボックスにJob DSLと入力します。
すでにJob DSLプラグインをインストールしていて、以前のバージョンからアップグレードしている場合、Job DSLを検索してもJob DSLスクリプトがリストに表示されません。プラグインJob DSLがインストールされているかどうかを確認するには、http://your_server_ip:8080/pluginManager/installed に移動してください。
- Job DSLオプションの横にチェックボックスをオンにします。
- 画面下部の再起動なしでインストールをクリックして、Jenkins Job DSLプラグインをインストールします。

プラグインのインストール中に進行状況バーが表示されます。インストールが完了すると、以下のような成功メッセージが表示されます。

Jenkins DSLプラグインを使用してJenkins Seed Jobを作成する
Jenkins DSLプラグインをインストールしたので、Jenkins seed jobを作成してください。基本的なJob DSLスクリプトを作成し、それをJenkins seed jobに組み込みます。Jenkinsコンソールに「Hello World!」メッセージを出力するフリースタイルのジョブを作成します。
JenkinsシードジョブにJob DSLスクリプトを組み込むには:
1. Jenkinsダッシュボードに移動し、左サイドバーで[新しいアイテム]をクリックします。ブラウザは新しいアイテムを作成できるページにリダイレクトされます(ステップ2)。

2. 次に、以下の内容で新しいアイテムを作成します:
- 以下に示すようにアイテム名を入力します。ただし、このチュートリアルではアイテム名はseedに設定されています。
- [Freestyleプロジェクト](繰り返し可能なビルドジョブ、スクリプト、またはパイプライン)を選択します。
- 画面下部のOKをクリックして新しいアイテムを作成し、ブラウザは新しいアイテムの構成ページにリダイレクトします。

3. 新しいアイテムの構成ページの他のセクションについてはデフォルトの設定を保持します。
ビルドセクションにスクロールし、[ビルドステップの追加]ドロップダウンボタンをクリックし、[Job DSLsの処理]を選択します。これにより、DSLスクリプトを提供するオプションが開きます(ステップ4)。

4. 以下に示すように[提供されたDSLスクリプトを使用]オプションを選択し、次のコードブロックをフィールドに入力します。
このコードブロックは、Jenkins UIに表示されるジョブの名前が「jenkins-job-demo-1」で、シェルステップを使用して「Hello World」メッセージを表示するFreestyleジョブの定義です。
Jenkinsジョブの異なる種類を作成するためには、公式のドキュメンテーションで見つけることができるさまざまな方法があります。

5. 新しいアイテム(シード)の構成を保存するには、ページの下部にある保存をクリックします。

6. 最後に、Jenkinsダッシュボードに移動して、作成したシードジョブが存在することを確認します。以下に示すように。

シードジョブの実行
シードジョブを成功裏に作成し、確認しました。しかし、ジョブが動作しているかどうかはどうやって知るのでしょうか?「Jenkins DSLプラグインを使用したJenkinsシードジョブの作成」セクションのステップ4で提供したDSLスクリプトに対してシードジョブを実行します。
1. Jenkinsダッシュボードで、シードジョブをクリックしてその構成ページに移動します。

2. 次に、左サイドバーで「今すぐビルド」をクリックしてジョブを実行します。

3. ページを更新するにはF5を押します。以下に示すように、ビルド履歴セクションに新しいビルドが表示され、左下に成功のステータス(緑のチェック)が表示されます。
この出力は、シードジョブが正常に実行され、Generated Itemsセクションに新しいJenkinsジョブ(jenkins-job-demo-1)が作成されたことを示しています。

4. 今度は、Jenkinsダッシュボードに移動します。以下に示すように、シードジョブによって作成された新しいJenkinsジョブ(jenkins-job-demo-1)が表示されます。
新しく生成されたジョブをクリックしてその構成ページにアクセスします。

5. 「今すぐビルド」をクリックして生成されたジョブ(jenkins-job-demo-1)を実行します。

6. 最後に、ビルド履歴セクションの下にある成功したビルドの隣にある下向き矢印ボタンをクリックして、以下のように表示されます。 コンテキストメニューから「コンソール出力」を選択して、ジョブの出力を表示します。

生成されたジョブが機能している場合、以下に示すように、「Hello World! This job is working!!」というメッセージが表示されます。 これは、Job DSLスクリプトで定義したメッセージです。
この時点で、Job DSLプラグインを使用してJenkinsジョブを作成して実行することができました!

Jenkins DSLプラグインを使用してCI/CDパイプライン用のジョブを作成する
これまでに、Job DSLプラグインを使用してJenkinsフリースタイルジョブを作成して実行する方法を学びました。 CI/CDパイプラインのためのJenkinsジョブを作成することで、ソフトウェア開発プロセスの非人間部分を自動化します。
具体的には、GitHubリポジトリからコードを取得し、コードをビルドし、ユニットテストを実行するジョブを作成します。
CI/CDパイプライン用のJenkinsジョブを作成するには:
1. Webブラウザで http://your_server_ip:8080/job/seed/configure に移動して、シードジョブを構成します。「your_server_ip」をJenkinsサーバーのIPアドレスに置き換え、「seed」をジョブの名前に置き換えます。
2. 次に、ビルドセクションにスクロールして、「DSLスクリプト」フィールドを見つけ、既存の内容を以下のコードに置き換えます。
コードを追加したら、変更を保存するために保存をクリックします。

3.次の画面の左サイドバーで[今すぐビルド]をクリックして、シードジョブを再実行します。 ビルド履歴セクション(左下)の下に、シードジョブが正常に実行されたことがわかります。
新しいビルド(#2)をクリックして、ビルドの構成ページにアクセスします。

4.今、新しいビルドの[コンソール出力]に移動します。 追加されたアイテムのメッセージと新しいジョブの名前が表示されます。
この出力は、新しいパイプラインジョブが正常に追加されたことを示しています。

5. Jenkinsダッシュボードに戻り、ジョブのリストに新しいパイプラインジョブ(jenkins-job-demo-2)が追加されていることがわかります。 その新しいパイプラインジョブをクリックして、ジョブの構成ページにアクセスします。

6.最後に、新しいパイプラインジョブを実行するために[今すぐビルド]をクリックします。 ビルド履歴セクションに正常に実行されたことが示されます。
ジョブの隣にあるドロップダウン矢印をクリックして、[コンソール出力]を選択します。

以下のコンソール出力では、Jenkinsがリポジトリを正常にクローンし、コードをビルドし、ユニットテストを実行したことがわかります。

結論
このチュートリアルでは、Job DSLプラグインを使用してJenkinsジョブを作成する方法について学びました。 Jenkins Pipelineプラグインを使用してCI/CDパイプラインを作成することで、アプリケーション開発を向上させる方法に触れました。
Job DSLプラグインとJenkins Pipelineプラグインは、Jenkinsのジョブとビルドパイプラインを効果的に管理する方法を提供するために並行して動作します。なぜこれらのプラグインを構成して、ビルドプロセスの一部としてJenkinsジョブを自動的にトリガーする洗練されたビルドパイプラインを作成しないのですか?