この記事は、Jenkins Configuration as Codeに関する6回シリーズの最終回です。
Jenkins configuration as codeを使用すると、Jenkinsマスターの設定を簡潔で宣言的なYAMLファイルとして作成し、コードとして管理できます。なかなか便利そうですが、どうやって始めればよいのでしょうか?
移行の方法
エンドユーザーがまず考えるのは、一からすべてを学習する必要のないツールを採用したいということです。すでに何百ものプラグインが設定されたJenkinsマスターを運用している場合、そこからJCasCの採用は大きな移行の負担を意味します。
まっさらのJenkinsマスターから始めるユーザーでも、具体的なサンプルなしに最初のJenkins YAMLファイルを書くということは、おそらくしないでしょう。これまでのJenkins configuration as codeシリーズの記事をご覧になっていない方のために言うと、Jenkins configuration as codeは、参考用のリファレンスとスキーマを生成します。しかし、これもまだ難しい方法ではあります。
サンプルとデモ
そういう方のために、GitHubリポジトリには、さまざまなプラグインやユースケース用のサンプル設定を含むデモフォルダーが用意されています(新しいサンプルの提供も歓迎します!)。要件に合ったサンプルをつまみ食いし、YAML構文とJenkinsの設定に慣れるのに役立ちます。
しかし、さらに簡単な方法もあります。
ライブインスタンスからのエクスポート
YAML-to-Jenkins設定のエンジン開発中に、私たちは多くの場合は逆の処理、つまりJenkinsインスタンスからYAMLコンテンツを生成することも可能であるのに気が付きました。
実際、Jenkins configuration as codeがYAML入力を使って模倣しているWebユーザーインターフェイス(UI)のデータバインディングも、同じ原理に基づいています。つまり、Web UIのデータモデルの文字列表現を取得し、サブミットボタンが押されたとき、そのデータをJavaモデルに変換します。そして、設定ページに戻ったときには、JavaモデルをWebフォーム要素として表示します。
そこで、私たちはエクスポート機能を導入しました。
このボタンは、Jenkinsインスタンスの設定を反映したYAMLコンテンツを生成します。
この機能を実装する上での大きな課題は、巨大なYAMLダンプを作成しないよう、デフォルト状態ではない要素だけをエクスポートすることでした。これにより、Web UIを使っていくつかの変更を加えたとき、YAMLエクスポートで実際にどのような変更が行われたかを知ることができます。
これは、目的のYAML構文を調べ、Jenkins configuration as codeを数分で準備する非常に簡単な方法です。
制限事項
Jenkinsの内部的な不具合のために、エクスポートをそのまま使用してJenkinsマスターの複製を作成することはできません。YAMLストリームには、データのエクスポート失敗に関する警告が含まれている可能性があります。それでも、ユーザー独自のYAML設定ファイルを書くためのベースとして使うことはできます。
では、この次は?
この記事は、 Jenkins configuration as codeシリーズの最終回です。このシリーズが、Jenkins configuration as codeプロジェクトとそのメリットを発見し、試してみるのに役立つことを願っています。
Jenkins Configuration for Codeプラグインの詳細については、プロジェクトのGitHubリポジトリをご覧ください。コミュニティやコントリビューターとチャットするには、私たちのgitterチャネルに参加してください。
シリーズの他の回
Jenkins Configuration as Code:最初の一歩(ママ見て、すごいでしょ)
Jenkins Configuration as Code:機密データの扱い
Configuration as Code:プラグインをどう扱うか
Jenkins Configuration as Code:もっとスピードを!
Jenkins Configuration as Code:ドキュメント
(この記事は、CloudBees社 Blog 「Jenkins Configuration as Code: Migration」2018年9月12日 Nicolas De Loof 投稿の翻訳記事です。)