Jenkinsでフリースタイル ジョブを保守するのは面倒です。
フリースタイル ジョブを使用する場合、上流と下流のジョブと連結することによりビルド フローを定義します。しかし、フリースタイル ジョブの設定はGUI ベースのみであるため、変更のたびに手動による操作が必要となるだけでなく、設定を一元管理することもできません。
宣言型パイプラインは、フリースタイル ジョブの欠点を克服し、よりモダンで推奨されるアプローチを提供します。ただし、フリースタイル ジョブを宣言型パイプラインに手動で変換しようとすると、時間がかかり、エラーも発生しやすくなってしまいます。
そこで、Declarative Pipeline Migration Assistant (宣言型パイプライン移行アシスタント) プラグインを使用して、このプロセスを効率化する方法をご紹介します。
宣言型パイプライン移行アシスタントとは?
宣言型パイプライン移行アシスタントはフリースタイル ジョブの詳細を使用して最初の宣言型パイプラインを生成する Jenkins のプラグインで、2020年2月に初めてリリースされました。宣言型パイプライン移行アシスタントは、変換中にベストエフォート型のアプローチを使用します。つまり、フリースタイル ジョブの中の対応している設定は自動的に変換され、未対応のプラグインにはプレースホルダーのステージが作成されます。
宣言型パイプライン移行アシスタントのメリットは次のとおりです。
- レガシー ジョブ タイプから移行する場合に、パイプラインを1から書く手間を省けます
- 宣言型パイプラインを書き始めるための学習曲線を下げます
- フリースタイル ジョブと比較して、パイプラインの管理が簡単になります
- フリースタイル ジョブを手動で保守することに伴うオーバーヘッドを軽減します
- マスター上でスクリプトを実行する問題を解決します(共有ライブラリの使用)
フリースタイル ジョブを宣言型パイプラインに変換する手順は次のようになります。
フリースタイル ジョブからJenkinsfileを生成する
パイプラインまたはマルチブランチ パイプライン プロジェクトは、Jenkinsfileと呼ばれる一元化された構成ファイルに基づいています。Jenkinsfileは、GUIまたはテキスト エディタで作成でき、Gitなどのソフトウェア構成管理(SCM)ツールなどのリポジトリに、プロジェクト コードとともに、または別のリポジトリに格納されます。SCMを使用してファイルを保存すると、設定ファイルの集中管理された場所が提供され、パイプラインのコードレビューと監査証跡の作成が可能になります。宣言型パイプライン移行アシスタントは、フリースタイル ジョブの詳細を使用して最初のJenkinsfileを作成します。
前提条件として、Jenkins のバージョンは2.150.1以降で、次のプラグインがインストールされている必要があります。
- Declarative Pipeline Migration Assistant プラグイン
- Pipeline プラグイン
フリースタイル ジョブからJenkinsfileを生成するには、次の操作を行います。
- フリースタイル ジョブに移動します。
- フリースタイル ジョブのページの左側のナビゲーションメニューで [To Declarative] を選択します。
変換が完了すると、レビュー用のJenkinsfileが提供されます。
宣言型パイプライン移行アシスタント プラグインは現在のところ対応するプラグインの数が限られています。現在対応しているプラグインのリストについては、下の表を参照してください。
変換でプラグインの警告が表示された場合、そのプラグインは変換できかったことを表します。
- プラグインはパイプラインと互換性がありません。プラグインがパイプラインと互換性があるかどうかプラグインのドキュメントを確認できます。互換性がない場合は、代わりにシェル ステップを使用してください。
- プラグインはパイプラインと互換性があり、Snippet Generator に表示されます(互換性のあるプラグインのリストについては、下の表を参照してください)。正しい構文を作成するには、Snippet Generator を使用してください。
- プラグインはパイプラインと互換性がありますが、Snippet Generator には表示されません(現在対応しているプラグインのリストについては、下の表を参照してください)。プラグインの実装の詳細については、パイプラインのドキュメントを参照してください。詳細については、Jenkinsfileをカスタマイズするを参照してください。
対応プラグイン
タイプ | ステップ |
---|---|
SCM | Git |
ステップ | シェルの実行 |
ステップ | Windows バッチ コマンドの実行 |
ステップ | Mavenの呼び出し |
ビルド ラッパー | Config File Provider プラグイン |
ビルド ラッパー | シークレット(Credentials Bindingに変換) |
ビルド ラッパー | Build timeout プラグイン |
ジョブ プロパティ | Lockable Resources プラグイン |
ジョブ プロパティ | ビルドのパラメータ化 |
ジョブ プロパティ | 古いビルドの破棄 |
ビルド・トリガ | 他プロジェクトの後にビルド |
ビルド・トリガ | SCMをポーリング |
ビルド・トリガ | 定期的に実行 |
ビルド環境 | 設定ファイルを提供 |
ビルド環境 | 秘密テキストや秘密ファイルを使用する |
ビルド後の処理 | JUnit プラグイン |
ビルド後の処理 | HTML Publisher プラグイン |
ビルド後の処理 | 別のプロジェクトのビルド |
ビルド後の処理 | E-mail通知 |
ビルド後の処理 | 成果物が何もない場合でもビルドを失敗にしない |
ビルド後の処理 | ビルドが成功した場合のみ保存 |
ビルド後の処理 | 保存された成果物の指紋を記録 |
Jenkinsfileをカスタマイズする
フリースタイル ジョブからJenkinsfileを生成した後、Jenkinsfileをテキスト ファイルにコピー&ペーストするか、提供されたテキスト ファイルをダウンロードしてテキスト エディターで開きます。次に、Jenkinsfileを確認し、必要に応じて新しいパイプライン プロジェクトを編集して、フリースタイル ジョブと同じタスクを実行します。
Jenkinsfileの編集の詳細については、以下を参照してください。
一般的なリファレンスとして、パイプライン構文リファレンス ガイドをご覧ください。
Jenkinsでパイプラインプロジェクトを作成し、Jenkinsfileを追加する
フリースタイル ジョブからJenkinsfileを生成し、Jenkinsfileを編集したら、次のステップは、Jenkinsfileを設定ファイルとしてパイプラインまたはマルチブランチ パイプライン プロジェクトに追加することです。まず、Jenkinsでパイプライン プロジェクトを作成します。その後、Jenkinsfileをコピーしてパイプライン エディターに貼り付けるか、GitHubなどのSCMに保存して、リポジトリをパイプライン プロジェクトに接続することにより、プロジェクトにJenkinsfileを追加します。
パイプライン プロジェクトを作成してJenkinsfileを追加するには、次のいずれかを行います。
- Jenkinsでパイプラインプロジェクトを作成し、Jenkinsfileテキストをコピーしてパイプラインエディターに貼り付けます。
または - JenkinsfileをGitHubのようなSCMリポジトリに保存します。
まとめ
Declarative Pipeline Migration Assistant(宣言型パイプライン移行アシスタント)プラグインを使用すると、保守が面倒なフリースタイル ジョブをモダンな宣言型パイプラインに容易に変換することができます。この機会にフリースタイル ジョブを宣言型パイプラインに変換して、Jenkinsの保守の労力を減らしてみてはいかがでしょうか。
参考
- Converting a Freestyle project to a Declarative Pipeline | CloudBees Docs
- Declarative Pipeline Migration Assistant | Jenkins plugin
JenkinsとJenkinsパイプラインについて詳しく学びたい方にはJenkinsトレーニングがお勧めです。
Jenkinsを少ない労力で横展開したい方にはCloudBees Coreがお勧めです。