CI/CDパイプラインの設計|成果物・段階・停止条件を決める

CI/CDパイプラインは、変更をビルド・検査・配信へ進める工程をつなぐものです。設計では、コマンドの順番だけでなく、各段階が何を受け取り、何を確認し、どの成果物を次へ渡すかを決めます。

この記事では、工程を組み立てる開発・運用担当者に向けて、成果物の対応と停止条件を整理します。特定ツールへ貼り付ける設定例ではなく、実装前の設計メモとして使う内容です。

段階ごとに入力と成果物を決める

まず、ソースコードの版から本番確認までを表にします。次は一つのアプリケーションを想定した設計例です。

段階 主な入力 次へ渡すもの 止める例
ビルド 固定したソースと依存 配布物・版の記録 ビルド失敗
自動検査 配布物・試験条件 検査結果 必須検査の不合格
試験環境 検査対象と同じ配布物 動作確認結果 必要操作が成立しない
本番反映 採用する配布物・設定 反映した版 承認や条件の不足
公開確認 実際に配信される版 動作・配信の証拠 想定した版と違う

GitHub Actionsではジョブ間の依存関係を指定でき、依存するジョブの完了を待って次へ進めます。このような機能を使う場合も、どの検査を必須とするかは設計側で決める必要があります。GitHub「Understanding GitHub Actions」

試験した成果物と配信する成果物をつなぐ

試験環境と本番で別々にビルドするときは、同じコードの版でも依存や設定が変わっていないか確認が必要です。可能なら同じ配布物を次段階へ渡し、環境ごとの設定を別に管理する方法を検討します。

記録する対象は、コミットIDだけでなく、配布物の識別子やハッシュ、生成した処理の記録です。どの検査結果がどの配布物に対応するかをたどれるようにします。

GitHubのartifact機能には、アップロード時とダウンロード時のSHA256 digestを照合する仕組みがあります。ただし、公式資料が示す不一致時の挙動は警告表示です。警告があるだけで公開が止まると考えず、停止条件を別に確かめてください。GitHub「Store and share data with workflow artifacts」

失敗と承認待ちで止まる場所を分ける

テスト失敗と、業務上の公開承認待ちは別の状態です。再実行すれば解決するとは限らないため、停止理由、確認担当、再開条件をそれぞれ残します。

GitHubのenvironmentには保護ルールを設けられ、対象ジョブは条件を通過するまで実行や環境のsecret利用へ進めません。利用できる機能はリポジトリの公開範囲やプランで異なります。GitHub「Managing environments for deployment」

これは製品例です。使う基盤では、誰が承認できるか、どの版を承認したか、承認後に対象が変わったらどうするかを確認します。設定画面に項目があるだけで運用が成立したとは判断しません。

配信後の確認と戻す条件を設計する

デプロイ処理の終了と、利用者が新しい版を使えることは分けて確認します。配信した版、主要操作、エラーの状態など、システムに合う確認対象を定めます。

問題が出たときは、前の配布物へ戻せるかだけでなく、その間に変更されたデータや設定も確認します。データ構造を変更するリリースでは、コードだけ戻して成立するかを事前に検討してください。

戻す条件、判断者、戻した後の確認を、正常な公開経路と同じ設計メモへ残します。具体的な操作は、運用手順書の作り方に沿って別の担当者が使える形にできます。

一変更の記録を端から端までたどる

試行では、意図的に検査を不合格にしたケースや、承認待ちのケースを含め、想定した場所で止まるかを確認します。本番環境へ影響しない試験用の経路で行ってください。

最後に、ソース、配布物、検査、承認、配信結果が一つの変更としてつながるかを読み合わせます。ツールの比較へ進む場合は、必要になった実行環境・権限・保管条件をCI/CDツールの比較の項目へ渡すと、製品名だけの検討を避けられます。

記事一覧へ戻る

ITの困りごとを、
まずはご相談ください。

何から手をつけるか決まっていない段階でも構いません。ご相談内容に応じて、担当者からご連絡します。

まずは相談する

採用へのご応募は採用エントリーからお願いします。