JobDSLを使用してJenkinsジョブ構成を自動化する方法
序章
Jenkins は人気のある自動化サーバーであり、継続的インテグレーション(CI)および継続的展開(CD)ワークフローを調整するためによく使用されます。 ただし、Jenkins自体を設定するプロセスは、従来、システム管理者にとって手動のサイロ化されたプロセスでした。 このプロセスには通常、依存関係のインストール、Jenkinsサーバーの実行、サーバーの構成、パイプラインの定義、およびジョブの構成が含まれます。
次に、 Everything as Code(EaC)パラダイムが登場しました。これにより、管理者はこれらの手動タスクをバージョン管理および自動化可能な宣言型コードとして定義できます。 以前のチュートリアルでは、Jenkinsfiles を使用してJenkinsパイプラインをコードとして定義する方法と、依存関係をインストールし、DockerとJCasCを使用してJenkinsサーバーの構成をコードとして定義する方法について説明しました。 ただし、Docker、JCasC、およびパイプラインのみを使用してJenkinsインスタンスをセットアップすると、これまでのところしか得られません。これらのサーバーにはジョブがプリロードされないため、誰かが手動で構成する必要があります。 Job DSL プラグインはソリューションを提供し、Jenkinsジョブをコードとして構成できるようにします。
このチュートリアルでは、Job DSLを使用して、2つのデモジョブを構成します。 'Hello World'
コンソールのメッセージ、およびGitリポジトリからパイプラインを実行するメッセージ。 チュートリアルを最後まで実行すると、独自のユースケース用に構築できる最小限のJobDSLスクリプトが得られます。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- セットアップウィザードを介して、またはJenkins Configuration as Code(JCasC)を使用してセットアップされたJenkinsサーバー。 実験できるJenkinsサーバーがない場合は、他のガイドに従って、 Ubuntu 、 Kubernetes 、または
DockerとJCasC[ X183X]。
ステップ1—JobDSLプラグインのインストール
Job DSL プラグインは、このチュートリアルでデモジョブに使用するJobDSL機能を提供します。 このステップでは、JobDSLプラグインをインストールします。
まず、に移動します your_jenkins_url/pluginManager/available
. 検索ボックスに「 Job DSL
. 次に、表示されるプラグインリストで、 Job DSL の横のチェックボックスをオンにし、再起動せずにインストールをクリックします。
注:検索する場合 Job DSL
結果が返されませんでした。これは、Job DSLプラグインがすでにインストールされているか、Jenkinサーバーのプラグインリストが更新されていないことを意味します。
次の場所に移動すると、JobDSLプラグインがすでにインストールされているかどうかを確認できます。 your_jenkins_url/pluginManager/installed
と検索 Job DSL
.
次の場所に移動して、Jenkinsサーバーのプラグインリストを更新できます。 your_jenkins_url/pluginManager/available
(空の)プラグインリストの下部にある今すぐ確認ボタンをクリックします。
インストールプロセスを開始すると、インストールの進行状況を示すページにリダイレクトされます。 次の手順に進む前に、 JobDSLとLoadingpluginextensionsの両方の横にSuccessが表示されるまで待ちます。
JobDSLプラグインをインストールしました。 これで、JobDSLを使用してジョブをコードとして構成する準備が整いました。 次のステップでは、ジョブDSLスクリプト内でデモジョブを定義します。 次に、スクリプトをシードジョブに組み込みます。シードジョブを実行すると、定義されたジョブが作成されます。
ステップ2—シードジョブの作成
シードジョブは、ジョブDSLスクリプトを実行する通常のJenkinsジョブです。 次に、スクリプトには、追加のジョブを作成する命令が含まれています。 要するに、シードジョブはより多くのジョブを作成するジョブです。 このステップでは、ジョブDSLスクリプトを作成し、それをシードジョブに組み込みます。 定義するジョブDSLスクリプトは、単一のフリースタイルジョブを作成します。 'Hello World!'
ジョブのコンソール出力のメッセージ。
Job DSLスクリプトは、JobDSLプラグインによって提供されるAPIメソッドで構成されています。 これらのAPIメソッドを使用して、タイプ(フリースタイルジョブとパイプラインジョブ)、ビルドトリガー、ビルドパラメーター、ビルド後のアクションなど、ジョブのさまざまな側面を構成できます。 サポートされているすべてのメソッドは、APIリファレンスサイトにあります。
デフォルトでは、サイトには、コアJenkinsインストールの一部として使用できるジョブ構成設定のAPIメソッドと、サポートされている184個のプラグイン(現在のところ正確)によって有効になっている設定が表示されます。 v1.77
). Job DSLプラグインがコアJenkinsインストールに対してのみ提供するAPIメソッドをより明確に把握するには、検索ボックスの横にあるファンネルアイコンをクリックし、プラグインでフィルターチェックボックスをオンまたはオフにして選択を解除しますすべてのプラグイン。
APIメソッドのリストが大幅に削減されました。 JenkinsのインストールにJobDSLプラグイン以外のプラグインがインストールされていなくても、残っているものは機能します。
「ハローワールド」フリースタイルの仕事には、 job
APIメソッド(freeStyleJob
のエイリアスです job
そしてまた働くだろう)。 ジョブメソッドのドキュメントに移動してみましょう。
省略記号アイコンをクリックします(…
) の job(String name) { … }
内で利用可能なメソッドとブロックを表示するには job
ブロック。
内で最も一般的に使用されるメソッドとブロックのいくつかを見てみましょう job
ブロック:
parameters
:ユーザーがジョブの新しいビルドを作成するときに入力するパラメーターを設定します。properties
:ジョブ内で使用される静的な値。scm
:GitHubなどのソース管理プロバイダーからソースコードを取得する方法の構成。steps
:ビルドの各ステップの定義。triggers
:ビルドを手動で作成する以外に、どのような状況でジョブを実行するかを指定します(たとえば、 cronジョブのように定期的に、またはGitHubリポジトリへのプッシュのようないくつかのイベントの後に)。
子ブロックをさらに展開して、その中で使用できるメソッドとブロックを確認できます。 省略記号アイコンをクリックします(…
) の steps { … }
を明らかにする shell(String command)
シェルスクリプトを実行するために使用できるメソッド。
ピースをまとめると、次のようなJob DSLスクリプトを記述して、実行時に印刷されるフリースタイルジョブを作成できます。 'Hello World!'
出力コンソールで。
job('demo') {
steps {
shell('echo Hello World!')
}
}
Job DSLスクリプトを実行するには、最初にそれをシードジョブに組み込む必要があります。
シードジョブを作成するには、に移動します your_jenkins_url
、ログインし(必要な場合)、ダッシュボードの左側にある新しいアイテムリンクをクリックします。 次の画面で、次のように入力します seed
、フリースタイルプロジェクトを選択し、OKをクリックします。
次の画面で、ビルドセクションまでスクロールし、ビルドステップの追加ドロップダウンをクリックします。 次に、 Process JobDSLsを選択します。
次に、提供されたDSLスクリプトの横にあるラジオボタンをクリックし、作成したジョブDSLスクリプトをDSLスクリプトテキスト領域に貼り付けます。
保存をクリックしてジョブを作成します。 これはあなたをに連れて行きます seed
ジョブページ。
次に、に移動します your_jenkins_url
そして、 seed
仕事はそこにあります。
これで、JobDSLスクリプトを組み込んだシードジョブが正常に作成されました。 次のステップでは、シードジョブを実行して、ジョブDSLスクリプトに基づいて新しいジョブが作成されるようにします。
ステップ3—シードジョブの実行
このステップでは、シードジョブを実行し、JobDSLスクリプト内で定義されたジョブが実際に作成されていることを確認します。
まず、クリックして seed
ジョブページをクリックし、左側の Build Now ボタンをクリックして、 seed
仕事。
ページを更新すると、生成されたアイテムという新しいセクションが表示されます。 それはリストします demo
JobDSLスクリプトで指定したジョブ。
案内する your_server_ip
そして、あなたは見つけるでしょう demo
JobDSLスクリプトで指定したジョブ。
デモリンクをクリックして、 demo
ジョブページ。 シードジョブ:シードが表示されます。これは、このジョブが seed
仕事。 次に、 Build Now リンクをクリックして、 demo
一度仕事。
これにより、ビルド履歴ボックス内にエントリが作成されます。 エントリの日付にカーソルを合わせると、小さな矢印が表示されます。 それをクリックしてドロップダウンを表示します。 ドロップダウンから、コンソール出力を選択します。
これにより、このビルドからのログとコンソール出力が表示されます。 その中に、あなたは行を見つけるでしょう + echo Hello World!
に続く Hello World!
、に対応します shell('echo Hello World!')
JobDSLスクリプトにステップインします。
あなたは実行しました demo
仕事と確認しました echo
JobDSLスクリプトで指定されたステップが実行されました。 次の最後のステップでは、ジョブDSLスクリプトを変更して再適用し、追加のパイプラインジョブを含めます。
ステップ4—パイプラインジョブの定義
Everything as Codeパラダイムに沿って、ますます多くの開発者がビルドを pipeline ジョブ(通常はパイプラインスクリプト(通常は名前が付けられている)を使用するジョブ)として定義することを選択しています。 Jenkinsfile
)—フリースタイルの仕事の代わりに。 The demo
これまでに定義した仕事は小さなデモンストレーションです。 このステップでは、GitHubからGitリポジトリをプルダウンし、パイプラインスクリプトの1つで定義されたパイプラインを実行するより現実的なジョブを定義します。
JenkinsがGitリポジトリをプルし、パイプラインスクリプトを使用してビルドするには、追加のプラグインをインストールする必要があります。 したがって、Job DSLスクリプトに変更を加える前に、まず必要なプラグインがインストールされていることを確認してください。
案内する your_jenkins_url/pluginManager/installed
プラグインリストで、 Git 、 Pipeline:Job 、および Pipeline:Groovyプラグインの存在を確認してください。 それらのいずれかがインストールされていない場合は、に移動します your_jenkins_url/pluginManager/available
プラグインを検索して選択し、再起動せずにインストールをクリックします。
必要なプラグインがインストールされたので、追加のパイプラインジョブを含めるためにジョブDSLスクリプトを変更することに焦点を移しましょう。
パブリックjenkinsci/ pipeline-examples Gitリポジトリからコードをプルし、そこにあるenvironmentInStage.groovy宣言型パイプラインスクリプトを実行するパイプラインジョブを定義します。
もう一度、 Jenkins Job DSL APIリファレンスに移動し、じょうごアイコンをクリックしてプラグインによるフィルターメニューを表示し、Gitを除くすべてのプラグインの選択を解除します。 、パイプライン:ジョブ、およびパイプライン:Groovy。
左側のメニューのpipelineJobをクリックして、 pipelineJob(String name) { … }
ブロックし、次に、順番に、 definition { … }
, cpsScm { … }
、 と scm { … }
ブロック。
各APIメソッドの上に、それらの役割を説明するコメントがあります。 このユースケースでは、GitHubリポジトリ内にあるパイプラインスクリプトを使用してパイプラインジョブを定義する必要があります。 したがって、ジョブDSLスクリプトを次のように変更する必要があります。
job('demo') {
steps {
shell('echo Hello World!')
}
}
pipelineJob('github-demo') {
definition {
cpsScm {
scm {
git {
remote {
github('jenkinsci/pipeline-examples')
}
}
}
scriptPath('declarative-examples/simple-examples/environmentInStage.groovy')
}
}
}
変更するには、 your_jenkins_url/job/seed/configure
DSLスクリプトテキスト領域を見つけて、内容を新しいジョブDSLスクリプトに置き換えます。 次に、保存を押します。 次の画面で、今すぐビルドをクリックしてシードジョブを再実行します。
次に、新しいビルドのコンソール出力ページに移動すると、次のように表示されます。 Added items: GeneratedJob{name='github-demo'}
、これは、既存のジョブを変更せずに、新しいパイプラインジョブを正常に追加したことを意味します。
あなたはに行くことによってこれを確認することができます your_jenkins_url
; あなたは見つけるでしょう github-demo
ジョブはジョブのリストに表示されます。
最後に、に移動して、仕事が意図したとおりに機能していることを確認します。 your_jenkins_url/job/github-demo/
今すぐビルドをクリックします。 ビルドが完了したら、に移動します your_jenkins_url/job/github-demo/1/console
Jenkinsがリポジトリのクローンを作成し、パイプラインスクリプトを実行したことを示す[コンソール出力]ページが表示されます。
結論
このチュートリアルでは、Job DSLプラグインを使用して、一貫性のある繰り返し可能な方法でJenkinsサーバー上のジョブを構成しました。
しかし、Job DSLは、Everything as Code(EaC)パラダイムに従うJenkinsエコシステムの唯一のツールではありません。 JenkinsをDockerコンテナーとしてデプロイし、Jenkins Configuration as Code(JCasC)を使用してセットアップすることもできます。 Docker、JCasC、Job DSL、およびパイプラインを組み合わせることで、開発者と管理者は、手動で関与することなく、Jenkinsを完全に自動的にデプロイおよび構成できます。