この記事の目次
AWS Codepipelineとは?

AWS CodePipelineの仕組み
AWS CodePipelineの仕組みについて説明します。 CodePipelineは、ソースコードが変更されるとそれを確認します。そして、別の操作により変更がされたかについても確認しそれぞれの流れをCodePipelineが確認します。パイプラインを手動で行なう際も同様です。 また、Amazon CloudWatch Eventsルールを使用して事前にスケジュールした通りに実行ができます。AWS CodePipelineの特徴5つ

CodePipelineの特徴1:カスタムシステムと統合できる
特徴1としてCodePipelineはカスタムシステムと統合することができます。 AWS CodePipelineは特定のニーズに合わせて簡単に拡張することができ、またリリースプロセスの任意のステップでAWSの構築済みのプラグイン、独自のカスタムプラグインを使用できます。 例えば、GitHubからソースコードを取得する、オンプレミスのJenkinsビルドサーバーを使用する、サードパーティーのサービスを使用して負荷テストを実施する、カスタムオペレーションダッシュボードにデプロイ情報を送信することなどが可能です。CodePipelineの特徴2:AWSへの統合が可能
AWS CodePipelineでは、ソースコードをCodeCommit、Amazon ECR、Amazon S3から取得が可能で、ユニットビルドとのテストはAWS CodeBuildでやることができます。 変更のデプロイには、CodeDeploy、Elastic Beanstalke、Amazon ECS、もしくはFargateを使用できます。新しいデプロイを作成するとき、デプロイグループに指定された自動ロールバック設定をオーバーライドすることもできます。 これ以外にもCloudFormationのアクションをモデル化すると、リリースプロセスの一環として AWSリソースを供給、更新、削除することができます。 これにより、AWS サーバーレスアプリケーションモデル(AWS SAM)でAWS Lambda、Amazon API gateway、およびAmazon DynamoDBを使用して構築したサーバーレスアプリケーション(serverless application)の継続的デリバリーも可能になります。 CodePipelineによって、これらのサービスをサードパーティー製の開発者用ツール(register-webhook-with-third-party)やカスタムシステムと結び付けるパイプラインを設定できます。 また、パイプラインに影響を与えるイベントに関する通知を作成することができ、通知はAmazon SNS通知という形で送信されます。CodePipelineの特徴3:ワークフローの視覚化
パイプラインでは、新しいコード変更がどのように進められていくのかが分かります。 パイプラインとそのさまざまなステージやアクションを作成、設定、管理するグラフィカルユーザーインターフェイスが用意されているため、リリースプロセスのワークフローの視覚化とモデル化を簡単に行うことができるのです。CodePipelineの特徴4:配信がはやい
定義したリリースモデルに基づき、コードチェンジがあった場合小規模で修正しやすいうちにフェーズの構築、テスト、デプロイを自動化できます。 そのため、機能とアップデートを素早く行うことができるのです。CodePipelineの特徴5:プラグインを統合できる
サードパーティーの開発者用ツールをワンクリックするだけで、リリースプロセスの任意のステージに統合が可能です。利用できるものとしてソース管理、ビルド、テストなどがあります。 また、ユーザー独自に構築したカスタムアクション(create-custom-action-type)を登録することでCodePiplineと統合することができます。AWS CodePipelineで定義されている用語6つ

CodePipeline用語1:アクション
アクションとは、アプリケーションコードに対する一連の操作のことです。CodePipeline上で有効なものは、source、build、test、deploy、approval、invokeになります。 アクションは、パイプライン内で指定された箇所において実行でき、また、パイプラインのアクションは、ステージ設定の定義に従い、連続または並行して実行できます。CodePipeline用語2:パイプライン
パイプラインとは、ソフトウェアの変更がどのように行われまたその流れを明らかにするためのワークフロー構造のことです。 各パイプラインは一連のステージで出来ており、ワークフローをステージとアクションの一続きで定義できます。CodePipeline用語3:ソースリビジョン
ソースリビジョンとは、パイプライン実行処理するためのソース変更のことです。ソースコードを変更すると、新しいバージョンが作成されそれを実行します。 リビジョンとは、ソースロケーションに加えられた変更で、ビルドアウトプット、ソースコード、設定などが対象です。パイプラインには複数ソースのリビジョンを同時に通過させることができます。CodePipeline用語4:トランジション
トランジションとは、パイプライン実行がパイプラインの次のステージに移動する際のポイントのことです。 ステージのインバウンドトランジションを無効にして、実行がそのステージに入らないようにしたり、そのトランジションを有効にして実行を継続したりすることができます。 無効なトランジションで複数の実行が到着した場合、トランジションが有効になると、最新の実行だけが次のステージに進むことができます。 つまり、トランジションが無効になっている間は、より新しい実行が待機中の実行よりも優先され、トランジションが有効になった後は継続する実行が優先されるのです。CodePipeline用語5:アーティファクト
アーティファクトとは、パイプラインで処理されるアプリケーションのソースコードや作られたアプリケーション、テンプレートなどのデータの集合体を意味します。 アーティファクトは、いくつかのアクションによって作られ、また消費されます。CodePipeline用語6:ステージ
ステージとは、その環境で同時変更する数を制限するために使用できる1つまたは複数の論理ユニットのことです。アーティファクトの一例がソースコードです。 ステージは、デプロイステージの場合もあれば、ビルドステージの場合もあります。各ステージは、連続もしくは並列のアクションで構成され、パイプラインには2つ以上のステージを設定できます。AWS CodePipelineの使い方3手順

CodePipelineの使い方1:ソースコードを指定する
CodePipelineでは、source actionにおいてどこからソースコードを取得するかを決めます。GitHubかS3の指定ができますが、S3を指定する場合には、予めバージョン管理において設定しておく必要があるので、注意しましょう。 S3がパイプラインのソースプロバイダーである場合、ソースファイルを1つの.zipに圧縮し、その.zipをソースバケットにアップロードできます。また解凍されたファイルを1つアップロードすることもできますが、.zipファイルを想定するダウンストリームアクションは失敗します。CodePipelineの使い方2:テスト実行
ソースコードを取得した後にテストが実行されます。 例えばS3を利用する場合ですが、S3オブジェクトが変更された時には、自動的にパイプラインが実行されます。ですからS3 Event Notificationなどの通知を設定する必要はありません。 承認アクションのあるステージは、承認アクションが承認または却下されるか、もしくはタイムアウトするまでロックされます。タイムアウトした承認アクションは、失敗したアクションと同じ方法で処理されます。失敗した場合
もしもテストが失敗した場合には、次の動作は実行されず停止します。 その際は、ソースコードを修正して再びsource targetにアップロードするか、自分でパイプラインプロセスを再開しない限り中止された状態となります。CodePipelineの使い方3:環境へデプロイ
ソースコードを取得した後にテストが実行され、それが成功すればその次の手順である環境へのデプロイが実行されます。 成果物を配置したり新しいバージョンシステムを供給したりするステージです。ECS以外にも、CodeDeployやS3へのファイル配置から、CloudFormationやElastic Beanstalkを設定することが可能です。AWS CodePipelineの利用料金は?

AWS CodePipelineを利用してみよう
