Jenkins パイプラインチュートリアル:作成方法 Jenkinsファイル(例)
⚡ スマートサマリー
Jenkins パイプラインは、ビルド、テスト、デプロイの各ジョブを、コードとして実行される順序付けられたシーケンスにリンクします。 Jenkinsプロジェクトと並行してコミットされたファイルは、その一連の流れを、レビュー可能でバージョン管理された納品物の定義へと変換します。
何ですか Jenkins パイプライン?
Jenkins Pipeline は、統合と実装をサポートするプラグインの組み合わせです。 継続的デリバリーパイプラインこれは、パイプラインDSLを介して、シンプルかつ複雑な配信パイプラインをコードとして作成するための拡張可能な自動化サーバーです。パイプラインとは、一連のイベントが順番にリンクされたものです。
継続的デリバリー パイプラインとは何ですか? 使い方?
で Jenkins パイプラインでは、すべてのジョブまたはイベントは、少なくとも1つ以上のイベントに何らかの形で依存しています。これは以下の図に示されています。

上の図は継続的デリバリーパイプラインを表しています。 Jenkinsこれは、ビルド、デプロイ、テスト、リリースと呼ばれる状態から構成されます。各状態には独自のイベントがあり、それらは順番に実行されます。
継続的デリバリーパイプラインは、そのプロセスを自動的に表現し、ソフトウェアをバージョン管理からリリースまで、繰り返し可能なビルドのシーケンスを通して運びます。 テスト そして展開段階。
何が Jenkinsファイル?
Jenkins パイプラインは、テキストファイルで定義できます。 Jenkinsファイル。これは、パイプラインをドメイン固有言語(DSL)のコードとして表現し、パイプラインを実行するために必要なすべてのステップを保持します。
使用する利点 Jenkinsファイルは以下のとおりです。
- 1 Jenkinsこのファイルは、各ブランチごとにパイプラインを作成し、プルリクエストを実行できます。
- 確認することができます Jenkins パイプライン上のコード
- 監査することができます Jenkins パイプライン
- これはパイプラインの単一のソースであり、複数のユーザーが変更できます。
パイプラインは以下のように定義できます。 Jenkins ウェブUIまたは Jenkinsソース管理にコミットされたファイル。最小限の宣言型ファイルは、パイプラインブロック、エージェント、およびフェーズごとに1つのステージを含むステージという、固定された構造を持つ。
pipeline { agent any stages { stage('Build') { steps { echo 'Building' } } stage('Test') { steps { echo 'Testing' } } stage('Deploy') { steps { echo 'Deploying' } } } }
リポジトリのルートに保存することで、パイプラインにコードのバージョンが反映されます。
宣言型パイプライン構文とスクリプト型パイプライン構文の比較
2つのタイプがあります Jenkins パイプライン構文は、定義に使用されます。 Jenkinsファイル。
- 宣言的
- スクリプト化
宣言的
宣言型パイプライン構文の方が簡単な方法です。これは事前に定義された階層構造に従い、パイプライン実行のあらゆる側面を分かりやすく制御します。
スクリプト化
スクリプト化 Jenkins パイプラインは Jenkins コントローラーは軽量エグゼキューターを介して動作し、パイプラインをアトミックコマンドに変換するために使用するリソースはごくわずかです。この2つは記述方法が大きく異なるため、1つずつ選択してください。 Jenkinsファイル。
⚠️ 注意: Jenkins 今は マスター コントローラ.
なぜ使うの? Jenkins パイプライン?
Jenkins オープンです 継続的統合サーバー 自動化する ソフトウェア開発プロセス複数の 自動化ジョブ ユースケースから抽出したデータを、1つのパイプラインとして実行します。
使用すべき理由は以下のとおりです。 Jenkins パイプライン:
- パイプラインはコードとして実装されているため、複数のユーザーがプロセスを編集および実行できます。
- パイプラインは堅牢です。サーバーが予期せず再起動した場合でも、パイプラインは自動的に再開されます。
- パイプラインを一時停止し、ユーザーが入力を行うまで待機させることができます。
- パイプラインは大規模プロジェクトをサポートします。複数のジョブを実行したり、パイプラインをループ内で使用したりすることも可能です。
Jenkins パイプライン Concepts
4つの項が毎回繰り返されます Jenkinsファイル:
| 契約期間 | 詳細説明 |
|---|---|
| パイプライン | 継続的デリバリーのためのビルドプロセス全体を網羅する、コードとして記述された一連の手順。パイプラインを使用することで、アプリケーションのビルド、テスト、デリバリーを実行できます。 |
| Node | 機械上で Jenkins 実行はノードと呼ばれます。ノードブロックは主にスクリプトパイプライン構文で使用されます。 |
| ステージ | ステージブロックには一連のステップが含まれています。ビルド、テスト、デプロイの各プロセスはそれぞれステージにまとめられ、パイプラインビューでもそれが視覚化されます。 |
| 手順 | 特定の処理を定められた時間に実行する単一のタスク。パイプラインは一連のステップで構成される。 |
ビルドパイプラインプラグインをインストールします Jenkins
ビルドパイプラインプラグインは、受信ジョブと送信ジョブのパイプラインビューを作成し、手動介入トリガーを追加します。
インストール方法は以下のとおりです。
ステップ1) プラグインの設定は以下にあります。 管理 Jenkins プラグインの管理、 下に示された。
⚠️ バージョンノート: 現在 Jenkins リリースラベルこの画面 管理 Jenkins → プラグインタブの動作はここに記載されているとおりです。
プラグインがすでにインストールされている場合は、「インストール済み」タブの下に表示されます。
ステップ2) プラグインがまだインストールされていない場合は、「利用可能」タブに表示されます。
プラグインをインストールした状態で:
作り方 Jenkins パイプライン
ログインしたら Jenkins ダッシュボード:
ステップ1) 左側の「+」ボタンをクリックしてください Jenkins パイプラインを作成するためのダッシュボード。
ステップ2) 新しいビューダイアログに入力してください。
- パイプラインビューに名前を付けましょう。それを「Guruこのデモでは「99 Pipeline」を使用します。
- オプションの下にある「パイプラインビューの構築」を選択します。
- 下図のように「OK」をクリックしてください。
ステップ3) 次のページでは、さらに詳細な設定が求められます。デフォルト設定を受け入れ、設定画面で最初のジョブを選択してください。
「適用」をクリックしてから「OK」をクリックしてください。
すると、アイテムのサンプルパイプラインビューが表示されます。
パイプラインビルドの実行
ステップ1) まずジョブを連結します。最初のジョブを開き、「設定」をクリックしてください。
ステップ2) 次に、「ビルドトリガー」で、「他のプロジェクトがビルドされた後にビルドする」オプションをオンにします。
あなたのあらゆる仕事に対応できる仕組みが、今や整いました。
ステップ3) ビルドパイプラインビュープラグインがインストールされていない場合は、インストールしてください。
ステップ4) ソフトウェア設定ページで、下図のように Jenkins ダッシュボードで、「+」ボタンを使用してビューを作成し、「ビルドパイプラインビュー」オプションを選択して「OK」をクリックします。
ステップ5) パイプラインビューの設定で、「パイプラインフロー」を探します。
パイプラインフローで、最初に実行するジョブ(ステップ1とステップ2で他のジョブに連結されたジョブ)を選択します。
Guru99 プロジェクト 1 が最初のジョブとして選択されているため、連鎖したジョブは 1 つずつ実行されます。
パイプラインの実行中は、赤と緑のシンボルでその状態が示されます。赤は失敗、緑は成功を表します。
この例ではボタンが緑色なので、パイプラインは成功しました。
Running: Jenkins パイプライン
「実行」をクリックして実行します Jenkins パイプライン。以下のようなものになります。
上記の例では、シンプルな「helloworld.java」プログラムを作成します。実際のプロジェクトでは、以下に示すような、はるかに複雑なパイプラインが連結されます。
⚠️ バージョンノート: ビルドパイプライン ビュー プラグインは、連鎖したフリースタイル ジョブを視覚化する従来の方法です。現在の慣行では、同じフローを Jenkinsファイル。青 Ocean もはや強化されていません。
ベストプラクティス Jenkins パイプライン
パイプラインを維持管理するための7つの習慣:
- 純正品を使用する Jenkins パイプライン
- パイプラインをコードとして開発する
- パイプライン内のセットアップ以外の作業はすべてステージ ブロック内で発生する必要があります。
- パイプライン内の重要な作業はすべて、ノード ブロック内で実行する必要があります。
- ノードブロック内で入力を使用しないでください。
- env グローバル変数を使用して環境変数を設定しないでください
- 入力をタイムアウトでラップする













