CodePipeline

#AWS CodePipeline とは
> AWS CodePipeline は、ソフトウェアをリリースするために必要なステップのモデル化、視覚化、および自動化に使用できる継続的な配信サービスです。ソフトウェアリリースプロセスのさまざまなステージをすばやくモデル化して設定できます。

##パイプライン用語
* パイプライン
    * Stages
    * アクション
* パイプラインの実行
    * 停止された実行
    * 失敗した実行
    * 置き換えられた実行
* アクションの実行
* Transitions
* アーティファクト
* ソースリビジョン

###Stages
> ステージは、環境を分離し、その環境での同時変更の数を制限するために使用できる論理ユニットです。各ステージには、アプリケーションアーティファクトに対して実行されるアクションが含まれます。ソースコードはアーティファクトの例です。ステージは、ソースコードが構築され、テストが実行されるビルドステージである場合もあれば、コードをランタイム環境にデプロイするデプロイステージの場合もあります。各ステージは、連続または並列のアクションで構成されています。

###アクション
> アクションは、アプリケーションコードに対して実行される一連の操作であり、アクションがパイプライン内で指定されたポイントで実行されるように設定されます。これには、コード変更によるソースアクション、インスタンスにアプリケーションをデプロイするためのアクションなどが含まれます。たとえば、デプロイステージには、Amazon EC2 や AWS Lambda などのコンピューティングサービスにコードをデプロイするデプロイアクションが含まれている場合があります。

##パイプラインの実行
> 実行は、パイプラインによってリリースされる一連の変更です。各パイプライン実行は一意であり、独自の ID を持ちます。実行は、マージされたコミットや最新のコミットの手動リリースなど、一連の変更に対応します。2 つの実行では、同じ変更セットを異なる時間に解放できます。

パイプラインは同時に複数の実行を処理できますが、パイプラインステージは一度に 1 つの実行のみを処理します。これを行うために、ステージは実行を処理している間ロックされます。2 つのパイプライン実行は、同時に同じステージを占めることはできません。

パイプラインの実行は、パイプラインのステージを順番に通過します。パイプラインの有効なステータスは、InProgress、Stopping、Stopped、Succeeded、Superseded、Failed です。Failed または Superseded ステータスの実行は、パイプラインを通じて続行されず、再試行できません。

##CodePipeline のユースケース
###Amazon S3、AWS CodeCommit、および AWS CodeDeploy​ で CodePipeline​ を使用する
* シンプルなパイプラインを作成する (S3 バケットの場合) 
* シンプルなパイプラインを作成する (CodeCommit リポジトリの場合) 

###Use CodePipeline をサードパーティのアクションプロバイダー (GitHub や Jenkins) と使用する
* GitHub リポジトリからソースコードを取得、

* Jenkins を使用してソースコードの構築とテストを実行、

* AWS CodeDeploy を使用して、Amazon Linux または Microsoft Windows Server を実行している Amazon EC2 インスタンスに、ビルトとテスト済みのソースコードをデプロイします。

###CodePipeline を AWS CodeStar と使用しコードプロジェクトでパイプラインを構築
> AWS CodeStar は AWS でソフトウェア開発プロジェクトを管理するために、統合されたユーザーインターフェイスを提供するクラウドベースサービスです。AWS リソースをプロジェクト開発のツールチェーンと組み合わせるため、AWS CodeStar は CodePipeline と動作しますAWS CodeStar ダッシュボードを使用して、パイプライン、リポジトリ、ソースコード、ビルドスペックファイル、デプロイ方法を自動作成したり、完全なコードプロジェクトで必要なインスタンスまたはサーバーレスインスタンスをホストできます。

AWS CodeStar プロジェクトを作成するには、コード言語とデプロイしたいアプリケーションのタイプを選択します。ウェブアプリケーション、ウェブサービス、Alexa スキルといったプロジェクトタイプを作成できます。

必要に応じていつでも任意の IDE を AWS CodeStar ダッシュボードで統合できます。チームメンバーの追加や削除を行ったり、プロジェクトでチームメンバーのアクセス権限を管理することもできます。

###CodeBuild で CodePipeline を使用してコードをコンパイル、構築、テストを実行
> CodeBuild はクラウドにあるマネージド型のビルドサービスで、サーバーやシステムを必要とせずにコードを構築したりテストを実行できるようにします。CodeBuild と CodePipeline を使用して、ソースコードに変更があるたびにパイプラインを介してソフトウェアビルドの継続デリバリーを可能にするため、リビジョンの実行を自動化できます。

###Amazon ECS と CodePipeline を使用してクラウドにコンテナベースのアプリケーションを継続的に配信する
> Amazon ECS はコンテナ管理サービスで、クラウド内の Amazon ECS インスタンスにコンテナベースのアプリケーションをデプロイできるようにします。Amazon ECS と CodePipeline を使用して、ソースイメージのリポジトリに変更があるたびにパイプラインを介してコンテナベースのアプリケーションのデプロイを継続的に実行できるようにするため、リビジョンの実行を自動化できます。

###Elastic Beanstalk と CodePipeline を使用してクラウドにウェブアプリケーションを継続的に配信する
> Elastic Beanstalk はウェブサーバーでウェブアプリケーションとサービスをデプロイできるようにするコンピューティングサービスです。Elastic Beanstalk と CodePipeline を使用してアプリケーション環境でウェブアプリケーションを継続的にデプロイするAWS CodeStar を使用して Elastic Beanstalk デプロイアクションでパイプラインを作成することもできます。

###AWS Lambda と CodePipeline を使用して Lambda ベースアプリケーションとサーバーレスアプリケーションを継続的に配信する
> CodePipeline と AWS Lambda を使用して「Lambda ベースのアプリケーションのデプロイメントを自動化する」で説明されているように AWS Lambda 関数を呼び出すことができます。AWS Lambda と AWS CodeStar を使用して、サーバーレスアプリケーションをデプロイするためのパイプラインを作成することもできます。

###AWS CloudFormation と CodePipeline を使用してクラウドにテンプレートを継続的に配信する
> CodePipeline を AWS CloudFormation とともに使用して、継続的な配信と自動化を行うことができます。詳細については、「CodePipeline を使用した継続的配信」を参照してください。AWS CloudFormation は、AWS CodeStar で作成されたパイプラインのテンプレート作成にも使用されます。