用語辞典・クラウド・開発運用

CI/CD

CI/CDとは

CI/CD(Continuous Integration/コンティニュアス・インテグレーション、Continuous DeliveryまたはContinuous Deployment/コンティニュアス・デリバリー/コンティニュアス・デプロイメント)は、コード変更時のテスト、ビルド、配備などを継続的に自動化する開発運用手法です。

CIは小さな変更を共有リポジトリへ頻繁に統合し、自動ビルドと試験で問題を早く見つけます。CDは合格した変更を公開可能な状態へ保つ配信、または本番まで自動反映する配備を指し、組織により意味を明示する必要があります。

処理経路を一度通すことが目的ではありません。同じソースと同じ手順から検証済み成果物を作り、変更を小さく保ち、安全に本番へ届け、結果をすぐ開発者へ戻す循環です。

小さな変更を統合し、同じ成果物を試験環境から本番へ昇格させる配信の承認検査点と配備の自動検査点、監視と切り戻しを分ける
複数開発者の変更がリポジトリへ入り、チェックアウト・ビルド・試験・セキュリティ確認の品質検査点を通ってsealed成果物となり、上段では人の承認後、下段では自動で環境へ配備し、正常性監視、秘密情報分離、切り戻し、開発者フィードバックへつながるピクトグラム図解
図1ステージ名と検査点は一例です。規制、リスク、システムアーキテクチャーに応じて承認と自動化の境界を決めます。

処理経路の主要段階

Change小さく頻繁に統合

短い分岐または主ブランチへ変更を送り、レビューと統合競合を小さくします。

Build再現可能な成果物を作る

依存先を固定し、ソースからパッケージ・画像・静的ファイルを生成します。

Test複数層で検証

静的検査、単位、統合、セキュリティ、契約、性能等をリスクに合わせます。

Artifact合格物を一意に保存

チェックサム・来歴を持つ変更不可成果物を後続環境へ同じまま渡します。

Deploy環境へ配置

設定と秘密情報を環境側から与え、正常性を確認しながらトラフィックへ加えます。

Feedback結果をすぐ戻す

試験失敗、配備、監視、インシデントの結果を変更者へ結び付けます。

Continuous Integration

開発者は変更を長期間孤立させず、共有行へ頻繁に統合します。プッシュやプル要求を起動条件に、クリーン環境でビルドと試験を実行します。

CIサーバーが緑でも品質が自動的に保証されるわけではありません。試験対象、検証条件、対象範囲、テスト用データ、本番環境との差が妥当である必要があります。

Continuous DeliveryとContinuous Deployment

Continuous Deliveryは、合格した変更をいつでも本番配備できる状態へ保ち、本番環境検査点に人の業務判断・承認を残す形です。

Continuous Deploymentは、すべての自動化された検査点を通った変更を人の個別操作なしに本番へ配備します。どちらも手動作業を減らしますが、本番反映の最終判断が異なります。

同じ成果物を昇格させる

検証環境で試験したソースから、本番で別ビルドを作り直すと依存先やツールバージョンが変わる可能性があります。一度作った変更不可成果物を保存し、同じダイジェストの物を環境間で昇格します。

環境差は設定、秘密情報、エンドポイント、容量として外から与えます。成果物へ本番環境パスワードを埋め込みません。

品質検査点

検査点は試験合格、レビュー、脆弱性基準、ライセンス、成果物署名、変更承認、メンテナンス時間窓、SLO等を判断します。単なる待ち時間ではなく、誰が何を根拠に通すかを記録します。

長すぎる処理経路はフィードバックを遅らせます。速い試験を先に、重いエンドツーエンドや性能試験を後ろに並べ、並列化とキャッシュを安全に使います。

不安定な試験を放置しない

同じ変更で成功・失敗が揺れる不安定な試験が増えると、再実行が習慣化し本当の障害を無視します。時刻、ネットワーク、共有状態、試験順、競合を特定して修正します。

一時隔離する場合も所有者と期限を持たせ、品質検査点を永久に弱めません。

秘密情報と処理経路権限

処理経路はソース、成果物レジストリ、クラウド、本番環境へ強い権限を持ちます。ジョブごとに短期認証情報を発行し、環境検査点通過前は本番環境秘密情報を渡しません。

外部プル要求、第三者操作、ビルドスクリプトを信頼できないコードとして扱います。トークン権限を絞り、依存先・実行環境画像・操作バージョンを固定し、成果物来歴と署名を検証します。

環境と並行実行

開発、試験、検証環境、本番環境は目的とデータ機密性が違います。本番に近い構成で検証しつつ、本番環境データを無断複製しません。

同じ環境への配備が重ならないよう並行実行制御を置きます。古い処理経路が後から完了して新バージョンを上書きしないよう、コミット・成果物・配備IDを照合します。

データベース変更

アプリケーション切り戻しだけではデータベーススキーマを戻せません。旧・新両バージョンと互換なスキーマを先に加え、データ移行後に古い列を後日削除する拡張してから縮小する等を使います。

移行のロック時間、バックアップ、再実行、途中失敗、大容量表への負荷を事前に試験します。

切り戻しと段階更新転送

前成果物へ戻せるよう、配備履歴、設定、データベース互換性を保持します。ただしデータ破損やセキュリティ脆弱性では単純切り戻しが危険な場合があり、修正版を前へ進める段階更新転送を選びます。

監視でエラー・遅延・業務指標を確認し、自動停止・切り戻しの条件と、人が上位担当へ連絡する基準を決めます。

CI/CDは変更を小さく統合し、自動検証した同一成果物を安全な検査点で環境へ進め、結果を素早く戻す仕組みです。CDが配信か配備かを明示します。

CIの頻繁なcommit・自動build・test:GitHub Docs「Continuous integration」、environment gate・approval・secret境界の実装例:GitHub Actions deployment environments

関連用語