Jenkins DSLプラグインを使用したフォーカスされたジョブ構成

組織は、ビルドとテストプロセスを自動化するためにJenkinsを採用することが増えており、Jenkinsジョブを手動で管理することが困難になっています。幸いなことに、Jenkins DSLプラグインを使用すると、ドメイン固有言語(DSL)の構文でJenkinsジョブを定義することができます。

Jenkins DSLを使用すると、ジョブをバージョン管理システムに保存したり、他のユーザーと共有したり、テンプレートから新しいジョブを生成したりすることが可能になります。そして、このチュートリアルでは、Jenkins DSLプラグインを活用してアプリケーション開発の自動化を支援する方法を学びます。

詳細は続きを読んで、ジョブを面倒な手順でJenkinsのUIをクリックする必要がなくなります!

前提条件

このチュートリアルは実践的なデモンストレーションです。一緒に進めるためには、以下のものが必要です。

  • A Linux machine – This guide uses Ubuntu 20.04.
  • Java 11+とJenkinsが Linux マシンにインストールされていること。
  • GitをGitリポジトリと統合する方法。
  • パイプライン:Jobは、Jenkinsで継続的なデリバリーパイプラインを実装および統合するために使用されるプラグインスイートを追加するためのものです。

Jenkins DSLプラグインのインストール

ジョブ間の一貫性を維持することは難しいかもしれませんが、Jenkins DSLプラグインはこの問題を解決します。どのようにして?ジョブをプログラム形式で、人間が読めるファイルで定義できるようにすることで。

ただし、ジョブを作成する前に、まずJenkins DSLプラグインをインストールする必要があります。

1. JenkinsサーバーにSSHして、次のコマンドを実行して、必要なJavaのバージョンがインストールされていること、およびjenkinsサービスが実行されていることを確認します。

java -version && systemctl status jenkins

以下と同様の出力が表示された場合は、Jenkins DSLプラグインをインストールする準備が整っています。

Checking Java version and Jenkins status

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プラグインをインストールします。
Installing the Jenkins DSL plugin

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

Viewing Jenkins DLS Plugin Installation Progress

Jenkins DSLプラグインを使用してJenkins Seed Jobを作成する

Jenkins DSLプラグインをインストールしたので、Jenkins seed jobを作成してください。基本的なJob DSLスクリプトを作成し、それをJenkins seed jobに組み込みます。Jenkinsコンソールに「Hello World!」メッセージを出力するフリースタイルのジョブを作成します。

JenkinsシードジョブにJob DSLスクリプトを組み込むには:

1. Jenkinsダッシュボードに移動し、左サイドバーで[新しいアイテム]をクリックします。ブラウザは新しいアイテムを作成できるページにリダイレクトされます(ステップ2)。

Adding a New Item

2. 次に、以下の内容で新しいアイテムを作成します:

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

3. 新しいアイテムの構成ページの他のセクションについてはデフォルトの設定を保持します。

ビルドセクションにスクロールし、[ビルドステップの追加]ドロップダウンボタンをクリックし、[Job DSLsの処理]を選択します。これにより、DSLスクリプトを提供するオプションが開きます(ステップ4)。

Selecting process job DSLs

4. 以下に示すように[提供されたDSLスクリプトを使用]オプションを選択し、次のコードブロックをフィールドに入力します。

このコードブロックは、Jenkins UIに表示されるジョブの名前が「jenkins-job-demo-1」で、シェルステップを使用して「Hello World」メッセージを表示するFreestyleジョブの定義です。

// Sets the API method you want to use (job)
job('jenkins-job-demo-1') { // Sets the name of the job to jenkins-job-demo-1
	// Define what the job does
  steps {
		// Prints a message
    shell('echo Hello World! This job is working!!')
  }
}

Jenkinsジョブの異なる種類を作成するためには、公式のドキュメンテーションで見つけることができるさまざまな方法があります。

Providing the DSL Script

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

Saving Configuration

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

Verifying the seed Job

シードジョブの実行

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

1. Jenkinsダッシュボードで、シードジョブをクリックしてその構成ページに移動します。

Navigating into the seed Job Page

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

Running the Seed Job

3. ページを更新するにはF5を押します。以下に示すように、ビルド履歴セクションに新しいビルドが表示され、左下に成功のステータス(緑のチェック)が表示されます。

この出力は、シードジョブが正常に実行され、Generated Itemsセクションに新しいJenkinsジョブ(jenkins-job-demo-1)が作成されたことを示しています。

Viewing the See Job Works and Generated a New Job

4. 今度は、Jenkinsダッシュボードに移動します。以下に示すように、シードジョブによって作成された新しいJenkinsジョブ(jenkins-job-demo-1)が表示されます。

新しく生成されたジョブをクリックしてその構成ページにアクセスします。

Verifying See Job’s Generated Job

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

Running the Generated Job (jenkins-job-demo-1)

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

Accessing Console Output of the Generated Job (jenkins-job-demo-1)

生成されたジョブが機能している場合、以下に示すように、「Hello World! This job is working!!」というメッセージが表示されます。 これは、Job DSLスクリプトで定義したメッセージです。

この時点で、Job DSLプラグインを使用してJenkinsジョブを作成して実行することができました!

Viewing Console Output

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スクリプト」フィールドを見つけ、既存の内容を以下のコードに置き換えます。

job('jenkins-job-demo-2') {
    steps {
        shell('echo Hello World!')
    }
}

pipelineJob('github-demo') {
    definition {
        cpsScm {
            scm {
                git {
                    remote {
                        github('jenkinsci/pipeline-examples')
                    }
                }
            }
            scriptPath('declarative-examples/simple-examples/environmentInStage.groovy')
        }
    }
}

コードを追加したら、変更を保存するために保存をクリックします。

Providing DSL Script for a Pipeline

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

新しいビルド(#2)をクリックして、ビルドの構成ページにアクセスします。

Rerunning the seed Job

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

この出力は、新しいパイプラインジョブが正常に追加されたことを示しています。

Verifying the New Pipeline Job was Added Successfully

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

Verifying the New Jenkins Job Exists

6.最後に、新しいパイプラインジョブを実行するために[今すぐビルド]をクリックします。 ビルド履歴セクションに正常に実行されたことが示されます。

ジョブの隣にあるドロップダウン矢印をクリックして、[コンソール出力]を選択します。

Running the New Jenkins Job

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

Viewing Console Output of the Pipeline Job

結論

このチュートリアルでは、Job DSLプラグインを使用してJenkinsジョブを作成する方法について学びました。 Jenkins Pipelineプラグインを使用してCI/CDパイプラインを作成することで、アプリケーション開発を向上させる方法に触れました。

Job DSLプラグインとJenkins Pipelineプラグインは、Jenkinsのジョブとビルドパイプラインを効果的に管理する方法を提供するために並行して動作します。なぜこれらのプラグインを構成して、ビルドプロセスの一部としてJenkinsジョブを自動的にトリガーする洗練されたビルドパイプラインを作成しないのですか?

Source:
https://adamtheautomator.com/jenkins-dsl/