【しーあいしーでぃーぱいぷらいん】

CI/CDパイプライン とは?

最終更新:
💡 コード変更から本番反映までの「自動化された流れ」

コードの変更を受けて、ビルド・テスト・デプロイなどを決まった順番で自動実行する一連の流れ。

📌 このページのポイント
CI/CD パイプライン CI(継続的インテグレーション) CD(継続的デリバリー) Source Build Unit Test Integration Test ✓ Staging Deploy E2E Test ✓ Production 本番デプロイ CI: コード変更を自動でビルド・テスト CD: いつでもリリースできる状態へ ゲート: 品質チェックを通過したら次へ 失敗したステージで止めて知らせる
CI/CD パイプラインのイメージ(本番反映まで自動で行う場合は「継続的デプロイ」と呼ぶ)
ひよこ ひよこ
パイプラインの中身はどうなってるの?
ペンギン先生 ペンギン先生
よくある構成は、①ソース(コードのプッシュがきっかけ)→②ビルド(コンパイルやコンテナイメージ作成)→③テスト(ユニットテスト・静的解析・E2Eテストなど)→④デプロイ(ステージング→本番)だよ。どこかで失敗したら後続を止めて知らせる「ゲート」の役目もあるんだ。
ひよこ ひよこ
本番へのデプロイも毎回自動なの?
ペンギン先生 ペンギン先生
そこはチームしだいだよ。いつでも本番に出せる状態を保ち、最後の本番反映は人が判断するのが「継続的デリバリー」。テストを通った変更を自動で本番まで出すのが「継続的デプロイ」なんだ。どちらもCDと略されるから、話すときは区別しておこう。
ひよこ ひよこ
GitHub ActionsとJenkins、どっちがいいの?
ペンギン先生 ペンギン先生
GitHubでコードを管理しているならGitHub Actionsが始めやすいよ。.github/workflowsにYAMLでワークフローを書けば、プッシュやプルリクエストをきっかけに動くんだ。Jenkinsは自分でサーバーを用意して細かく作り込みたい場合、GitLab CI/CDはGitLabを使っている場合に候補になるね。今使っているツールとの相性で選ぶのが基本だよ。
ひよこ ひよこ
パイプラインが遅いときの改善策は?
ペンギン先生 ペンギン先生
テストの並列実行、依存関係やDockerレイヤーのキャッシュ、不要なステップの削除、変更に関係するテストだけを先に流す工夫などがあるよ。エクストリームプログラミングでは、最初のビルドを10分以内に終えるのが目安とされているんだ。速い確認を先に済ませて、時間のかかるテストは後のステージに回すと、開発者を待たせにくいよ。
ひよこ ひよこ
セキュリティチェックも入れるべき?
ペンギン先生 ペンギン先生
入れておくと安心だよ。静的解析(SAST)、依存ライブラリの脆弱性チェック、コンテナイメージのスキャンなどをパイプラインに組み込む方法があるんだ。問題を早い段階で見つけるほど直しやすいから「シフトレフト」と呼ばれるよ。ただ、ツールで見つからない問題もあるから、レビューなど他の確認と組み合わせよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CI/CDパイプライン」って出てきたら「コード変更からリリースまでを順番に自動で進める流れ」と思えればだいたいOK!
📖 おまけ:英語の意味
「CI/CD Pipeline」 = 継続的インテグレーション/継続的デリバリーのパイプライン
💬 Pipeline(配管)のように、コードが各工程を流れていくイメージ。途中で品質チェックのゲートを通過するよ

参考資料

← 用語集にもどる