まず始めに
この記事はCodepipelineについての自分なりの理解をまとめたものです。
間違いなどあればご指摘お願い致します。
Codepipelineとは?
公式には以下の説明がされていました。
AWS CodePipeline は、ソフトウェアをリリースするために必要なステップのモデル化、視覚化、および自動化に使用できる継続的な配信サービスです。ソフトウェアリリースプロセスのさまざまなステージをすばやくモデル化して設定できます。CodePipeline はソフトウェアの変更を継続的にリリースするために必要なステップを自動化します。
簡単にまとめると書いたソースコードを自動でビルド、またはデプロイ、テストしてくれるサービスの一つです。
一連の流れをパイプラインといい、ソースコードに対する処理をアクションといいます。
各アクションを行う部分をステージといい、そのステージは大きく分けてソース、ビルド、デプロイの3つ構成されています。
・ソース …S3バケットやGithub、CodeCommit内のソースコードを取得する処理。
・ビルド …ソースで取得してソースコードをサーバなしに構築やコンパイル、テストを実行できます。
・デプロイ …ソースコードの配置、アプリケーションやサービスの更新などを行います。
ステージを2つ以上使用して、パイプラインを構成します。
また、各ステージで行ったアクション後のソースをテンプレートなどのデータの集合体アーティファクトとして、別のステージへ共有します。
主な機能としては、ソースで用いるCodeCommit、ビルドを行うCodeBuild、デプロイを行うCodeDeployの3つです。
それぞれの仕様をまとめていこうと思います。
CodeCommit
ソースステージでS3やGithubとともに並ぶCodeCommitとは、前述したもと同様のGitリポジトリの一つで、ドキュメントやソースコードなどのアセットを保存、管理するAWSサービスです。
S3のファイルのバージョニングとの違いとしては、
バッチ管理における複数での変更が可能であることです。(S3では過去バージョンの管理、復元のみ)
CodeBuild
CodeBuildでは任意のコンテナを起動し、ソースコード内や設定した任意のコマンドを実行します。
実行した結果はアーティファクトとして出力します。
実際の例としてはアプリケーションのテストやコンテナイメージのビルドとECRへのプッシュなどを実行できます。
各アクションのコマンドはbuildspecというソースを使用して実行します。
使用するコンテナ環境はカスタム可能で、あらかじめECRなどにプッシュして置けば、そのイメージが利用可能です。
CodeDeploy
CodeDeployはECSやEC2、Lambdaなど様々なサービス、またはオンプレミスインスタンスへのデプロイを実行できるサービスです。
ビルドステージがなくとも、S3やGitリポジトリに保存されているアプリケーションなどをデプロイすることも可能です。
使う利点としては、自動化はもちろんのことエラー時のロールバック、各環境や複数アプリケーションへの同時デプロイが可能な点があげられます。
最後に
今回はCodePipelineの主な機能についてまとめてみましたが、この機能は実際に使用してみると奥が深く、様々なカスタマイズやアクションを組み合わせることが可能で、できることに上限はないと思います。
少しでも参考にしていただければと思います。
次は実際の使い方についてまとめてみようと思います。
最後まで読んでいただきありがとうございました。