Pipeline

以下は Copilot Pipeline の Manifest で利用できるすべてのプロパティのリストです。Pipeline の概念説明のページも合わせてご覧ください。

継続的デリバリー Pipeline のサンプル Manifest
# "app-pipeline" は、user/repo にあるすべての Service や Job を
# "test" や "prod" Environment にデプロイします。
name: app-pipeline

source:
  provider: GitHub
  properties:
    branch: main
    repository: https://github.com/user/repo
    # オプション。既存の CodeStar Connection の接続名を指定します。
    # connection_name: a-connection

build:
  image: aws/codebuild/amazonlinux2-x86_64-standard:5.0
  # additional_policy: # コンテナイメージやテンプレートを構築する際に、権限を追加することができます。

stages: 
  - # デフォルトでは、すべてのワークロードはステージ内で同時にデプロイされます。
    name: test
    pre_deployments:
      db_migration:
        buildspec: ./buildspec.yml
    test_commands:
      - make integ-test
      - echo "woo! Tests passed"
  -
    name: prod
    requires_approval: true
# また、ステージ内のスタックデプロイの順番を制御することも可能です。
# https://aws.github.io/copilot-cli/blogs/release-v118/#controlling-order-of-deployments-in-a-pipeline を参照してください。
name: app-pipeline

source:
  provider: Bitbucket
  properties:
    branch: main
    repository:  https://bitbucket.org/user/repo

stages:
  - name: test
    deployments:
      orders:
      warehouse:
      frontend:
        depends_on: [orders, warehouse]
  - name: prod
    require_approval: true
    deployments:
      orders:
      warehouse:
      frontend:
        depends_on: [orders, warehouse]
# Environment Manifest の変更も、Pipeline でリリースすることができます。
name: env-pipeline

source:
  provider: CodeCommit
  properties:
    branch: main
    repository: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

stages:
  - name: test
    deployments:
      deploy-env:
        template_path: infrastructure/test.env.yml
        template_config: infrastructure/test.env.params.json
        stack_name: app-test
  - name: prod
    deployments:
      deploy-prod:
        template_path: infrastructure/prod.env.yml
        template_config: infrastructure/prod.env.params.json
        stack_name: app-prod

name String
Pipeline 名。

version String
テンプレートのスキーマバージョン。現在サポートされているバージョンは 1 だけです。

source Map Pipeline のトリガーに関する設定。

source.provider String
プロバイダー名。現在 GitHubBitbucket そして CodeCommit がサポートされています。

source.properties Map
Pipeline のトリガーに関するプロバイダー固有の設定。

source.properties.access_token_secret String
Pipeline をトリガーするための GitHub アクセストークンを保持する AWS Secrets Manager シークレットの名前。 (プロバイダーが GitHub で、個人のアクセストークンを利用して Pipeline を作成した場合)

Info

Copilot v1.4.0 から GitHub リポジトリをソースにする場合のアクセストークンは不要になりました。代わりに Copilot は AWS CodeStar の GitHub への接続を使って Pipeline をトリガーします。

source.properties.branch String
Pipeline をトリガーするリポジトリのブランチ名。 Copilot は、このフィールドに現在のローカルブランチを自動的に入力します。

source.properties.repository String
リポジトリの URL 。

source.properties.connection_name String
既存の CodeStar Connections の接続名。指定しない場合 Copilot は接続を作成します。

source.properties.output_artifact_format String 任意項目。アーティファクトの出力形式です。CODEBUILD_CLONE_REF または CODE_ZIP を指定します。省略した場合、デフォルトの CODE_ZIP が利用されます。

Info

このプロパティは、access_token_secret を使用するGitHub version 1 ソースアクションでは利用できません。

build Map
CodeBuild プロジェクトに関する設定。

build.image String
CodeBuild のビルドプロジェクトで利用する Docker イメージの URI。aws/codebuild/amazonlinux2-x86_64-standard:5.0 がデフォルトで利用されます。

build.buildspec String 任意項目。このビルドプロジェクトで使用する、buildspec ファイルへのプロジェクトルートからの相対パスを指定します。デフォルトでは、作成したファイルは、 copilot/pipelines/[your pipeline name]/buildspec.yml に配置されています。

build.additional_policy.PolicyDocument Map
任意項目。ビルドプロジェクトロールに追加するポリシードキュメントを指定します。追加のポリシードキュメントは、以下の例のように YAML のマップに指定することができます。

build:
  additional_policy:
    PolicyDocument:
      Version: '2012-10-17'
      Statement:
        - Effect: Allow
          Action:
            - ecr:GetAuthorizationToken
          Resource: '*'
or alternatively as JSON:
build:
  additional_policy:
    PolicyDocument: 
      {
        "Statement": [
          {
            "Action": ["ecr:GetAuthorizationToken"],
            "Effect": "Allow",
            "Resource": "*"
          }
        ],
        "Version": "2012-10-17"
      }

stages Array of Maps
Pipeline のデプロイ先である 1 つ以上の Environment をデプロイしたい順番に並べたリスト。

stages.name String
Service をデプロイする Environment 名。

stages.requires_approval Boolean
任意項目。デプロイの前に手動承認ステップを追加するかどうか (追加している場合はデプロイ前のアクションを追加するかどうか) を示します。デフォルトは false です。

stages.pre_deployments Map v1.30.0 にて追加
任意項目。デプロイ前に実行するアクションを追加します。

stages:
  - name: <env name>
    pre_deployments:
      <action name>:
        buildspec: <path to local buildspec>
        depends_on: [<other action's name>, ...]
stages.pre_deployments.<name> Map v1.30.0 にて追加
デプロイ前のアクションの名前。

stages.pre_deployments.<name>.buildspec String v1.30.0 にて追加
このビルドプロジェクトで使用する buildspec ファイルへのパスを、プロジェクトルートからの相対パスで指定します。

stages.pre_deployments.<name>.depends_on Array of Strings v1.30.0 にて追加
任意項目。このアクションをデプロイする前にデプロイする必要がある、他のデプロイ前アクションの名前。デフォルトでは依存関係はありません。

Info

デプロイ前およびデプロイ後の詳細については、v1.30.0 のブログ記事 および Pipeline ページを参照してください。

stages.deployments Map
任意項目。デプロイする CloudFormation スタックとその順序を制御します。 デプロイの依存関係は、次の形式の Map で指定されます。

stages:
  - name: test
    deployments:
      <service or job name>:
      <other service or job name>:
        depends_on: [<name>, ...]

例えば、Git リポジトリのレイアウトが次のようになっているとします。

copilot
├── api
│   └── manifest.yml
└── frontend
    └── manifest.yml

また、frontend の前に api がデプロイされるようにデプロイの順序を制御したい場合は、ステージを次のように設定できます。

stages:
  - name: test
    deployments:
      api:
      frontend:
        depends_on:
          - api
また、パイプラインの一部をリリースするマイクロサービスを制限することもできます。以下の Manifest では、api のみをデプロイし、frontend をデプロイしないよう指定しています。
stages:
  - name: test
    deployments:
      api:

最後に、もし deployments が指定されていない場合、デフォルトでは Copilot は git リポジトリにあるすべての Service と Job を並行してデプロイします。

stages.deployments.<name> Map
デプロイする Job または Service の名前。

stages.deployments.<name>.depends_on Array of Strings
任意項目。このマイクロサービスをデプロイする前にデプロイする必要がある他の Job または Service の名前。デフォルトでは依存関係はありません。

stages.deployments.<name>.stack_name String
任意項目。作成または更新するスタックの名前。デフォルトは <app name>-<stage name>-<deployment name> です。 たとえば、Application 名が demo、ステージ名が test、Service 名が frontend の場合、スタック名は demo-test-frontend になります。

stages.deployments.<name>.template_path String
任意項目。build フェーズで生成された CloudFormation テンプレートへのパス。デフォルトは infrastructure/<deployment name>-<stage name>.yml です。

stages.deployments.<name>.template_config String
任意項目。build フェーズで生成された CloudFormation テンプレート設定へのパス。デフォルトは infrastructure/<deployment name>-<stage name>.params.json です。

stages.post_deployments Mapv1.30.0 にて追加
任意項目。デプロイ後に実行するアクションを追加します。stages.test_commands とは相互に排他的です。

stages:
  - name: <env name>
    post_deployments:
      <action name>:
        buildspec: <path to local buildspec>
        depends_on: [<other action's name>, ...]
stages.post_deployments.<name> Map v1.30.0 にて追加
デプロイ後アクションの名前。

stages.post_deployments.<name>.buildspec String v1.30.0 にて追加
このビルドプロジェクトで使用する buildspec ファイルへのパスを、プロジェクトルートからの相対パスで指定します。

stages.post_deployments.<name>.depends_on Array of Strings v1.30.0 にて追加
任意項目。このアクションをデプロイする前にデプロイする必要がある他のデプロイ後アクションの名前。 デフォルトでは依存関係はありません。

stages.test_commands Array of Strings
任意項目。デプロイ後にインテグレーションテストまたは E2E テストを実行するコマンドです。デフォルトでは、デプロイ後の検証は行いません。'stages.post_deployment' とは相互に排他的です。