最終更新:
CI/CDとは?CIとCDの違い・パイプラインの流れを図解
pushすると必ず本番へ公開されるの?
設定次第だよ。CI/CDは変更の検証や配布を繰り返せるようにする取り組みで、pushだけが起動方法ではない。PR、スケジュール、手動なども使えるし、本番反映の前に人の承認を置くこともできるんだ。
CIは何をするの?
継続的インテグレーションだね。小さな変更を頻繁に統合して、ビルドやテストで問題を早く見つける。CIサービスを置くだけでなく、失敗を放置せず修正する運用も大事だよ。
CDには2つ意味があるの?
パイプラインの中身は?
ビルドに通れば品質も保証される?
ビルドは一つの確認だよ。型検査、単体テスト、連携テスト、画面操作など、見つけたい問題に応じて検証を組み合わせる。実行していない検証や不安定なテストを、成功と同じ扱いにしないことが大切だね。
同じコードを本番でもビルドし直す?
デプロイで失敗したら?
自動化で注意する権限は?
テスト実行用と本番反映用の権限を分け、外部から来た変更へ秘密情報を不用意に渡さないこと。GitHub Actionsなら最小限の権限、依存アクションの確認、本番環境の保護などを使える。利用できる機能はプランやリポジトリ条件も確認してね。
CIと2種類のCD
| 用語 | 達成したい状態 | 本番への反映 |
|---|---|---|
| CI | 小さな変更を統合し、問題を早く検出 | 必須ではない |
| 継続的デリバリー | リリースできる状態を維持 | 実施の判断を選べる |
| 継続的デプロイ | 合格した変更を自動で反映 | 自動化する |
失敗したときに見る4つの場所
- 起動条件:ブランチやパスの条件に合うか。実行自体が作られているか。
- 実行環境:ランナー、依存関係、権限、秘密情報が利用可能か。
- 検証と成果物:どのテストが失敗したか。配布対象はどのコミットのものか。
- 本番反映:承認待ちか、反映済みか。反映後のヘルスチェックが通るか。
失敗時の通知や後片付けを行うジョブは、失敗後にも実行する設定が必要な場合があります。「一箇所が失敗したらすべて停止」と一律には限りません。
ブルーグリーンやカナリアを使う場合も、アプリの切り戻しとDBの互換性は別に設計します。最初はCIを安定させ、検証環境、本番反映の順に必要な範囲を自動化すると、どこで問題が起きたか追いやすくなります。
参考資料
確認日:2026年9月27日。製品の仕様・料金・対応環境は導入時にも確認してください。
- Fowler: Continuous Delivery:デリバリーとデプロイの区別。
- GitHub: Understand Actions:イベント・ジョブ・ステップ・ランナー。
- GitHub: Deployments and environments:本番承認と環境保護。
- GitHub: Security hardening:最小権限、外部コード、依存アクション、OIDC。