【しーあいしーでぃー】

CI/CD とは?

最終更新:
💡 小さな変更を確かめて、継続的に届ける

コード変更を頻繁に統合し、自動ビルドやテストで確認するCIと、変更を本番へ届けるCDを組み合わせた開発の実践。CDには、本番配備できる状態を保つDeliveryと、本番配備まで自動化するDeploymentがある。

📌 このページのポイント
CI/CD:確認した変更を、継続的に届ける CI:頻繁な統合・自動チェック コード統合 ビルド テスト Delivery 本番へ配備できる状態 人が判断する例 自動判断 本番配備 本番配備 Deployment テスト・配備の条件は、目的に合わせて設定
CIの統合・ビルド・テストから、配備できる状態を保つDeliveryへ進む例。Deliveryでは人が配備判断を行う場合があり、Deploymentでは本番配備も自動にする。必須チェックや配備条件は別途設定する。
ひよこ ひよこ
CI/CDは何のために使うの?
ペンギン先生 ペンギン先生
変更を小さく頻繁に統合し、ビルドやテストを繰り返して問題を早く見つけるためだよ。配備の手順も自動化できる。ただし、入れれば必ずバグがなくなるという意味ではないんだ。
ひよこ ひよこ
CIではPRのテストに失敗すると必ずマージできない?
ペンギン先生 ペンギン先生
テストの実行と、マージを禁止する設定は別だよ。GitHubでは、ブランチ保護の必須ステータスチェックなどを設定して制限する。CIを動かしただけで、自動的にそのルールが付くわけではないんだ。
ひよこ ひよこ
CDは全部、本番まで自動なの?
ペンギン先生 ペンギン先生
Continuous Deliveryは、確認済みの変更を本番配備できる状態まで整えるよ。最後の配備判断を人が行う場合もある。Continuous Deploymentは、その本番配備も自動化するんだ。
ひよこ ひよこ
GitHub Actionsではどう作るの?
ペンギン先生 ペンギン先生
.github/workflowsにYAMLを置き、pushやPRなどのイベント、実行するジョブ、ビルドやテストのステップを定義するよ。使う言語やプロジェクトに合った処理を指定する。CI用のワークフローだけなら、本番配備は別の設定なんだ。
ひよこ ひよこ
テストを通ったら安心して配備できる?
ペンギン先生 ペンギン先生
確認した範囲で問題を見つけられなかったということだよ。必要なテストや配備条件、失敗時に戻す手順を考える。どんな変更も一定の時間で本番反映されるとは限らないんだ。
もっと詳しく知りたい人へ

CI/CDツールを入れれば、継続的な統合になる?

ツールは自動実行を助けるが、変更を長期間別々のブランチに置いたままでは、頻繁に共有コードへ統合するCIの実践とは異なる。統合の頻度と、自動チェックの内容の両方を考える。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CI/CD」って出てきたら「コードの変更を継続的に確かめ、届けるための実践」と思えばだいたいOK!
📖 おまけ:英語の意味
「Continuous Integration / Continuous Delivery or Deployment」 = 継続的統合/継続的デリバリーまたはデプロイメント
💬 Continuousは継続的、Integrationは統合という意味だよ。CDのDがDeliveryかDeploymentかで、本番配備まで自動にするかが違うんだ

参考資料

← 用語集にもどる