Pipeline

List of all available properties for a Copilot pipeline manifest. To learn more about pipelines, see the Pipelines concept page.

Sample manifest for a pipeline triggered from a GitHub repo
    name: frontend

    source:
      provider: GitHub
      properties:
        branch: main
        repository: https://github.com/<user>/frontend
        # Optional: specify the name of an existing CodeStar Connections connection.
        connection_name: a-connection

    build:
      image: aws/codebuild/amazonlinux2-x86_64-standard:3.0

    stages:
        -
          name: test
          test_commands:
            - make test
            - echo "woo! Tests passed"
        -
          name: prod
          requires_approval: true

name String
The name of your pipeline.

version String
The schema version for the template. There is only one version, 1, supported at the moment.

source Map
Configuration for how your pipeline is triggered.

source.provider String
The name of your provider. Currently, GitHub, Bitbucket, and CodeCommit are supported.

source.properties Map
Provider-specific configuration on how the pipeline is triggered.

source.properties.access_token_secret String
The name of AWS Secrets Manager secret that holds the GitHub access token to trigger the pipeline if your provider is GitHub and you created your pipeline with a personal access token.

Info

As of AWS Copilot v1.4.0, the access token is no longer needed for GitHub repository sources. Instead, Copilot will trigger the pipeline using AWS CodeStar connections.

source.properties.branch String
The name of the branch in your repository that triggers the pipeline. Copilot autofills this field with your current local branch.

source.properties.repository String
The URL of your repository.

source.properties.connection_name String
The name of an existing CodeStar Connections connection. If omitted, Copilot will generate a connection for you.

source.properties.output_artifact_format String
Optional. The output artifact format. Values can be either CODEBUILD_CLONE_REF or CODE_ZIP. If omitted, the default is CODE_ZIP.

Info

This property is not available for pipelines with GitHub version 1 source actions, which use access_token_secret.

build Map
Configuration for CodeBuild project.

build.image String
The URI that identifies the Docker image to use for this build project. As of now, aws/codebuild/amazonlinux2-x86_64-standard:3.0 is used by default.

build.buildspec String Optional. The URI that identifies a buildspec to use for this build project. By default, Copilot will generate one for you, located at copilot/pipelines/[your pipeline name]/buildspec.yml.

stages Array of Maps
Ordered list of environments that your pipeline will deploy to.

stages.name String
The name of an environment to deploy your services to.

stages.requires_approval Boolean
Optional. Indicates whether to add a manual approval step before the deployment. Defaults to false.

stages.deployments Map
Optional. Control which CloudFormation stacks to deploy and their order.
The deployments dependencies are specified in a map of the form:

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

For example, if your git repository has the following layout:

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

And you'd like to control the order of your deployments, such that api is deployed before frontend, then you can configure your stage as follows:

stages:
  - name: test
    deployments:
      api:
      frontend:
        depends_on:
          - api
You can also limit which microservices to release part of your pipeline. In the following manifest, we're specifying to deploy only api and not frontend:
stages:
  - name: test
    deployments:
      api:

Finally, if deployments isn't specified, by default Copilot will deploy all your services and job in the git repository in parallel.

stages.deployments.<name> Map
Name of the job or service to deploy.

stages.deployments.<name>.depends_on Array of Strings
Optional. Name of other job or services that should be deployed prior to deploying this microservice. Defaults to no dependencies.

stages.deployments.<name>.stack_name String
Optional. Name of the stack to create or update. Defaults to <app name>-<stage name>-<deployment name>.
For example, if your application is called demo, stage name is test, and your service name is frontend then the stack name will be demo-test-frontend.

stages.deployments.<name>.template_path String
Optional. Path to the CloudFormation template generated during the build phase. Defaults to infrastructure/<deployment name>-<stage name>.yml.

stages.deployments.<name>.template_config String
Optional. Path to the CloudFormation template configuration generated during the build phase. Defaults to infrastructure/<deployment name>-<stage name>.params.json.

stages.test_commands Array of Strings
Optional. Commands to run integration or end-to-end tests after deployment. Defaults to no post-deployment validations.