From 19c54788792006b37e76f7a09e576f385c6c53f7 Mon Sep 17 00:00:00 2001 From: git823 Date: Wed, 31 Mar 2021 15:09:40 +0000 Subject: [PATCH 1/6] feat: specifying build image --- internal/pkg/cli/pipeline_update.go | 6 ++++++ internal/pkg/deploy/pipeline.go | 23 +++++++++++++++++++++++ internal/pkg/manifest/pipeline.go | 10 ++++++++++ templates/cicd/pipeline.yml | 6 ++++++ templates/cicd/pipeline_cfn.yml | 2 +- 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/internal/pkg/cli/pipeline_update.go b/internal/pkg/cli/pipeline_update.go index 976f9b45820..51a4c35e2d1 100644 --- a/internal/pkg/cli/pipeline_update.go +++ b/internal/pkg/cli/pipeline_update.go @@ -256,6 +256,11 @@ func (o *updatePipelineOpts) Execute() error { } o.shouldPromptUpdateConnection = bool + build := deploy.PipelineBuildFromManifest(pipeline.Build) + if err != nil { + return fmt.Errorf("read build from manifest: %w", err) + } + // convert environments to deployment stages stages, err := o.convertStages(pipeline.Stages) if err != nil { @@ -272,6 +277,7 @@ func (o *updatePipelineOpts) Execute() error { AppName: o.appName, Name: pipeline.Name, Source: source, + Build: build, Stages: stages, ArtifactBuckets: artifactBuckets, AdditionalTags: o.app.Tags, diff --git a/internal/pkg/deploy/pipeline.go b/internal/pkg/deploy/pipeline.go index 09f50560606..5264471ec2d 100644 --- a/internal/pkg/deploy/pipeline.go +++ b/internal/pkg/deploy/pipeline.go @@ -40,6 +40,9 @@ type CreatePipelineInput struct { // The source code provider for this pipeline Source interface{} + // The build project settings for this pipeline + Build *Build + // The stages of the pipeline. The order of stages in this list // will be the order we deploy to. Stages []PipelineStage @@ -52,6 +55,13 @@ type CreatePipelineInput struct { AdditionalTags map[string]string } +// Build represents CodeBuild project used in the CodePipeline +// to build and test Docker image. +type Build struct { + // The URI that identifies the Docker image to use for this build project. + Image string +} + // ArtifactBucket represents an S3 bucket used by the CodePipeline to store // intermediate artifacts produced by the pipeline. type ArtifactBucket struct { @@ -171,6 +181,19 @@ func PipelineSourceFromManifest(mfSource *manifest.Source) (source interface{}, } } +// PipelineBuildFromManifest processes manifest info about the build project settings. +func PipelineBuildFromManifest(mfBuild *manifest.Build) (build *Build) { + var imageURI string + if (mfBuild == nil || mfBuild.Image == "") { + imageURI = manifest.DefaultImage + } else { + imageURI = mfBuild.Image + } + return &Build{ + Image: imageURI, + } +} + // GitHubPersonalAccessTokenSecretID returns the ID of the secret in the // Secrets manager, which stores the GitHub Personal Access token if the // provider is "GitHubV1". diff --git a/internal/pkg/manifest/pipeline.go b/internal/pkg/manifest/pipeline.go index 6fde3f1c076..f90db494fd0 100644 --- a/internal/pkg/manifest/pipeline.go +++ b/internal/pkg/manifest/pipeline.go @@ -17,6 +17,7 @@ const ( GithubV1ProviderName = "GitHubV1" CodeCommitProviderName = "CodeCommit" BitbucketProviderName = "Bitbucket" + DefaultImage = "aws/codebuild/amazonlinux2-x86_64-standard:3.0" pipelineManifestPath = "cicd/pipeline.yml" ) @@ -157,6 +158,7 @@ type PipelineManifest struct { Name string `yaml:"name"` Version PipelineSchemaMajorVersion `yaml:"version"` Source *Source `yaml:"source"` + Build *Build `yaml:"build"` Stages []PipelineStage `yaml:"stages"` parser template.Parser @@ -168,6 +170,11 @@ type Source struct { Properties map[string]interface{} `yaml:"properties"` } +// Build defines the build project to build and test image. +type Build struct { + Image string `yaml:"image"` +} + // PipelineStage represents a stage in the pipeline manifest type PipelineStage struct { Name string `yaml:"name"` @@ -190,6 +197,9 @@ func NewPipelineManifest(pipelineName string, provider Provider, stages []Pipeli ProviderName: provider.Name(), Properties: provider.Properties(), }, + Build: &Build{ + Image: DefaultImage, + }, Stages: stages, parser: template.New(), diff --git a/templates/cicd/pipeline.yml b/templates/cicd/pipeline.yml index 26794903de0..4f5b9e0cd43 100644 --- a/templates/cicd/pipeline.yml +++ b/templates/cicd/pipeline.yml @@ -19,6 +19,12 @@ source: # Optional: specify the name of an existing CodeStar Connections connection. # connection_name: a-connection {{- end}} + +# This section defines the build project. +build: + # The URI that identifies the Docker image to use for this build project. + image: {{.Build.Image}} + {{$length := len .Stages}}{{if gt $length 0}} # The deployment section defines the order the pipeline will deploy # to your environments. diff --git a/templates/cicd/pipeline_cfn.yml b/templates/cicd/pipeline_cfn.yml index 6ba54c5ee06..c46159eb9f3 100644 --- a/templates/cicd/pipeline_cfn.yml +++ b/templates/cicd/pipeline_cfn.yml @@ -117,7 +117,7 @@ Resources: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL PrivilegedMode: true - Image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 + Image: {{.Build.Image}} EnvironmentVariables: - Name: AWS_ACCOUNT_ID Value: !Sub '${AWS::AccountId}' From bacf01d9dc30068a854c1edc7b861987b5b94b41 Mon Sep 17 00:00:00 2001 From: git823 Date: Wed, 31 Mar 2021 15:21:22 +0000 Subject: [PATCH 2/6] remove unnecessary code. --- internal/pkg/cli/pipeline_update.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/internal/pkg/cli/pipeline_update.go b/internal/pkg/cli/pipeline_update.go index 51a4c35e2d1..70c1b0c30a0 100644 --- a/internal/pkg/cli/pipeline_update.go +++ b/internal/pkg/cli/pipeline_update.go @@ -257,9 +257,6 @@ func (o *updatePipelineOpts) Execute() error { o.shouldPromptUpdateConnection = bool build := deploy.PipelineBuildFromManifest(pipeline.Build) - if err != nil { - return fmt.Errorf("read build from manifest: %w", err) - } // convert environments to deployment stages stages, err := o.convertStages(pipeline.Stages) From d85e76db16bcb837af7e5bbb3d08038463899a60 Mon Sep 17 00:00:00 2001 From: git823 Date: Thu, 1 Apr 2021 15:27:53 +0000 Subject: [PATCH 3/6] Add tests. --- internal/pkg/cli/pipeline_update_test.go | 55 +++++++++++++++++++ .../deploy/cloudformation/pipeline_test.go | 8 +++ .../stack/ghv1_pipeline_integration_test.go | 3 + internal/pkg/deploy/pipeline_test.go | 30 ++++++++++ internal/pkg/manifest/pipeline_test.go | 48 +++++++++++++++- 5 files changed, 143 insertions(+), 1 deletion(-) diff --git a/internal/pkg/cli/pipeline_update_test.go b/internal/pkg/cli/pipeline_update_test.go index 51325d6bd11..0f7335ee960 100644 --- a/internal/pkg/cli/pipeline_update_test.go +++ b/internal/pkg/cli/pipeline_update_test.go @@ -619,6 +619,61 @@ source: expectedError: fmt.Errorf("update pipeline: some error"), }, + "update and deploy pipeline with specifying build property": { + inApp: &app, + inAppName: appName, + inRegion: region, + callMocks: func(m updatePipelineMocks) { + content := ` +name: pipepiper +version: 1 + +source: + provider: GitHub + properties: + repository: aws/somethingCool + access_token_secret: "github-token-badgoose-backend" + branch: main + +build: + image: aws/codebuild/standard:3.0 + +stages: + - + name: chicken + test_commands: + - make test + - echo "made test" + - + name: wings + test_commands: + - echo "bok bok bok" +` + gomock.InOrder( + m.prog.EXPECT().Start(fmt.Sprintf(fmtPipelineUpdateResourcesStart, appName)).Times(1), + m.deployer.EXPECT().AddPipelineResourcesToApp(&app, region).Return(nil), + m.prog.EXPECT().Stop(log.Ssuccessf(fmtPipelineUpdateResourcesComplete, appName)).Times(1), + + m.ws.EXPECT().ReadPipelineManifest().Return([]byte(content), nil), + m.ws.EXPECT().WorkloadNames().Return([]string{"frontend", "backend"}, nil).Times(1), + + // convertStages + m.envStore.EXPECT().GetEnvironment(appName, "chicken").Return(mockEnv, nil).Times(1), + m.envStore.EXPECT().GetEnvironment(appName, "wings").Return(mockEnv, nil).Times(1), + + // getArtifactBuckets + m.deployer.EXPECT().GetRegionalAppResources(gomock.Any()).Return(mockResources, nil), + + // deployPipeline + m.deployer.EXPECT().PipelineExists(gomock.Any()).Return(true, nil), + m.prompt.EXPECT().Confirm(fmt.Sprintf(fmtPipelineUpdateExistPrompt, pipelineName), "").Return(true, nil), + m.prog.EXPECT().Start(fmt.Sprintf(fmtPipelineUpdateProposalStart, pipelineName)).Times(1), + m.deployer.EXPECT().UpdatePipeline(gomock.Any()).Return(nil), + m.prog.EXPECT().Stop(log.Ssuccessf(fmtPipelineUpdateProposalComplete, pipelineName)).Times(1), + ) + }, + expectedError: nil, + }, } for name, tc := range testCases { t.Run(name, func(t *testing.T) { diff --git a/internal/pkg/deploy/cloudformation/pipeline_test.go b/internal/pkg/deploy/cloudformation/pipeline_test.go index 639474c0ee3..3938ff37890 100644 --- a/internal/pkg/deploy/cloudformation/pipeline_test.go +++ b/internal/pkg/deploy/cloudformation/pipeline_test.go @@ -15,6 +15,8 @@ import ( "github.com/stretchr/testify/require" ) +const defaultImage = "aws/codebuild/amazonlinux2-x86_64-standard:3.0" + func TestCloudFormation_PipelineExists(t *testing.T) { in := &deploy.CreatePipelineInput{ AppName: "kudos", @@ -79,6 +81,9 @@ func TestCloudFormation_CreatePipeline(t *testing.T) { ProviderName: "Bitbucket", Branch: "main", }, + Build: &deploy.Build{ + Image: defaultImage, + }, Stages: nil, ArtifactBuckets: nil, } @@ -239,6 +244,9 @@ func TestCloudFormation_UpdatePipeline(t *testing.T) { RepositoryURL: "aws/somethingCool", Branch: "main", }, + Build: &deploy.Build{ + Image: defaultImage, + }, Stages: nil, ArtifactBuckets: nil, } diff --git a/internal/pkg/deploy/cloudformation/stack/ghv1_pipeline_integration_test.go b/internal/pkg/deploy/cloudformation/stack/ghv1_pipeline_integration_test.go index 73330f43257..4e16d3f35e5 100644 --- a/internal/pkg/deploy/cloudformation/stack/ghv1_pipeline_integration_test.go +++ b/internal/pkg/deploy/cloudformation/stack/ghv1_pipeline_integration_test.go @@ -27,6 +27,9 @@ func TestGHv1Pipeline_Template(t *testing.T) { Branch: "mainline", PersonalAccessTokenSecretID: "my secret", }, + Build: &deploy.Build{ + Image: "aws/codebuild/amazonlinux2-x86_64-standard:3.0", + }, Stages: []deploy.PipelineStage{ { AssociatedEnvironment: &deploy.AssociatedEnvironment{ diff --git a/internal/pkg/deploy/pipeline_test.go b/internal/pkg/deploy/pipeline_test.go index f5b72b71310..c298bbf8323 100644 --- a/internal/pkg/deploy/pipeline_test.go +++ b/internal/pkg/deploy/pipeline_test.go @@ -148,6 +148,36 @@ func TestPipelineSourceFromManifest(t *testing.T) { } } +func TestPipelineBuildFromManifest(t *testing.T) { + const defaultImage = "aws/codebuild/amazonlinux2-x86_64-standard:3.0" + + testCases := map[string]struct { + mfBuild *manifest.Build + expectedBuild *Build + }{ + "set default image if not be specified in manifest": { + mfBuild: nil, + expectedBuild: &Build{ + Image: defaultImage, + }, + }, + "set image according to manifest": { + mfBuild: &manifest.Build{ + Image: "aws/codebuild/standard:3.0", + }, + expectedBuild: &Build{ + Image: "aws/codebuild/standard:3.0", + }, + }, + } + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + build := PipelineBuildFromManifest(tc.mfBuild) + require.Equal(t, tc.expectedBuild, build, "mismatched build") + }) + } +} + func TestParseOwnerAndRepo(t *testing.T) { testCases := map[string]struct { src *GitHubSource diff --git a/internal/pkg/manifest/pipeline_test.go b/internal/pkg/manifest/pipeline_test.go index 1fd8a860412..0d0ea7b066c 100644 --- a/internal/pkg/manifest/pipeline_test.go +++ b/internal/pkg/manifest/pipeline_test.go @@ -20,6 +20,7 @@ import ( const ( defaultGHBranch = "main" defaultCCBranch = "master" + defaultImage = "aws/codebuild/amazonlinux2-x86_64-standard:3.0" ) func TestNewProvider(t *testing.T) { @@ -106,6 +107,9 @@ func TestNewPipelineManifest(t *testing.T) { Branch: defaultGHBranch, }), }, + Build: &Build{ + Image: defaultImage, + }, Stages: []PipelineStage{ { Name: "chicken", @@ -218,7 +222,7 @@ stages: inContent: `corrupted yaml`, expectedErr: errors.New("yaml: unmarshal errors:\n line 1: cannot unmarshal !!str `corrupt...` into manifest.PipelineManifest"), }, - "valid pipeline.yml": { + "valid pipeline.yml without build": { inContent: ` name: pipepiper version: 1 @@ -261,6 +265,48 @@ stages: }, }, }, + "valid pipeline.yml with build": { + inContent: ` +name: pipepiper +version: 1 + +source: + provider: GitHub + properties: + repository: aws/somethingCool + access_token_secret: "github-token-badgoose-backend" + branch: main + +build: + image: aws/codebuild/standard:3.0 + +stages: + - + name: chicken + test_commands: [] +`, + expectedManifest: &PipelineManifest{ + Name: "pipepiper", + Version: Ver1, + Source: &Source{ + ProviderName: "GitHub", + Properties: map[string]interface{}{ + "access_token_secret": "github-token-badgoose-backend", + "repository": "aws/somethingCool", + "branch": defaultGHBranch, + }, + }, + Build: &Build{ + Image: "aws/codebuild/standard:3.0", + }, + Stages: []PipelineStage{ + { + Name: "chicken", + TestCommands: []string{}, + }, + }, + }, + }, } for name, tc := range testCases { From c1f20e1a4be4c580e3c0046bd1016b5f2327331a Mon Sep 17 00:00:00 2001 From: git823 Date: Fri, 2 Apr 2021 16:37:00 +0000 Subject: [PATCH 4/6] Apply feedback. --- internal/pkg/cli/pipeline_update.go | 4 +--- internal/pkg/deploy/pipeline.go | 12 ++++++------ internal/pkg/manifest/pipeline.go | 6 +----- internal/pkg/manifest/pipeline_test.go | 4 ---- site/content/docs/manifest/pipeline.md | 14 ++++++++++++++ templates/cicd/pipeline.yml | 6 ------ 6 files changed, 22 insertions(+), 24 deletions(-) diff --git a/internal/pkg/cli/pipeline_update.go b/internal/pkg/cli/pipeline_update.go index 70c1b0c30a0..1a1bd02f586 100644 --- a/internal/pkg/cli/pipeline_update.go +++ b/internal/pkg/cli/pipeline_update.go @@ -256,8 +256,6 @@ func (o *updatePipelineOpts) Execute() error { } o.shouldPromptUpdateConnection = bool - build := deploy.PipelineBuildFromManifest(pipeline.Build) - // convert environments to deployment stages stages, err := o.convertStages(pipeline.Stages) if err != nil { @@ -274,7 +272,7 @@ func (o *updatePipelineOpts) Execute() error { AppName: o.appName, Name: pipeline.Name, Source: source, - Build: build, + Build: deploy.PipelineBuildFromManifest(pipeline.Build), Stages: stages, ArtifactBuckets: artifactBuckets, AdditionalTags: o.app.Tags, diff --git a/internal/pkg/deploy/pipeline.go b/internal/pkg/deploy/pipeline.go index 5264471ec2d..18bb9d7606e 100644 --- a/internal/pkg/deploy/pipeline.go +++ b/internal/pkg/deploy/pipeline.go @@ -17,6 +17,8 @@ import ( const ( fmtInvalidRepo = "unable to locate the repository URL from the properties: %+v" + + defaultPipelineBuildImage = "aws/codebuild/amazonlinux2-x86_64-standard:3.0" ) var ( @@ -183,14 +185,12 @@ func PipelineSourceFromManifest(mfSource *manifest.Source) (source interface{}, // PipelineBuildFromManifest processes manifest info about the build project settings. func PipelineBuildFromManifest(mfBuild *manifest.Build) (build *Build) { - var imageURI string - if (mfBuild == nil || mfBuild.Image == "") { - imageURI = manifest.DefaultImage - } else { - imageURI = mfBuild.Image + image := defaultPipelineBuildImage + if mfBuild != nil && mfBuild.Image != "" { + image = mfBuild.Image } return &Build{ - Image: imageURI, + Image: image, } } diff --git a/internal/pkg/manifest/pipeline.go b/internal/pkg/manifest/pipeline.go index f90db494fd0..96f41b5d26b 100644 --- a/internal/pkg/manifest/pipeline.go +++ b/internal/pkg/manifest/pipeline.go @@ -17,7 +17,6 @@ const ( GithubV1ProviderName = "GitHubV1" CodeCommitProviderName = "CodeCommit" BitbucketProviderName = "Bitbucket" - DefaultImage = "aws/codebuild/amazonlinux2-x86_64-standard:3.0" pipelineManifestPath = "cicd/pipeline.yml" ) @@ -172,7 +171,7 @@ type Source struct { // Build defines the build project to build and test image. type Build struct { - Image string `yaml:"image"` + Image string `yaml:"image"` } // PipelineStage represents a stage in the pipeline manifest @@ -197,9 +196,6 @@ func NewPipelineManifest(pipelineName string, provider Provider, stages []Pipeli ProviderName: provider.Name(), Properties: provider.Properties(), }, - Build: &Build{ - Image: DefaultImage, - }, Stages: stages, parser: template.New(), diff --git a/internal/pkg/manifest/pipeline_test.go b/internal/pkg/manifest/pipeline_test.go index 0d0ea7b066c..267cd0177bd 100644 --- a/internal/pkg/manifest/pipeline_test.go +++ b/internal/pkg/manifest/pipeline_test.go @@ -20,7 +20,6 @@ import ( const ( defaultGHBranch = "main" defaultCCBranch = "master" - defaultImage = "aws/codebuild/amazonlinux2-x86_64-standard:3.0" ) func TestNewProvider(t *testing.T) { @@ -107,9 +106,6 @@ func TestNewPipelineManifest(t *testing.T) { Branch: defaultGHBranch, }), }, - Build: &Build{ - Image: defaultImage, - }, Stages: []PipelineStage{ { Name: "chicken", diff --git a/site/content/docs/manifest/pipeline.md b/site/content/docs/manifest/pipeline.md index 4f5ba49b0b8..9a53d1049c0 100644 --- a/site/content/docs/manifest/pipeline.md +++ b/site/content/docs/manifest/pipeline.md @@ -14,6 +14,9 @@ List of all available properties for a Copilot pipeline manifest. # 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 @@ -60,6 +63,17 @@ The name of an existing CodeStar Connections connection. If omitted, Copilot wil
+`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. + +!!! info + Copilot does not support cross-account ECR repository or private registry other than ECR because [imagePullCredentialsType](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectEnvironment.html#CodeBuild-Type-ProjectEnvironment-imagePullCredentialsType) is fixed to `CODEBUILD`. + +
+ `stages` Array of Maps Ordered list of environments that your pipeline will deploy to. diff --git a/templates/cicd/pipeline.yml b/templates/cicd/pipeline.yml index 4f5b9e0cd43..26794903de0 100644 --- a/templates/cicd/pipeline.yml +++ b/templates/cicd/pipeline.yml @@ -19,12 +19,6 @@ source: # Optional: specify the name of an existing CodeStar Connections connection. # connection_name: a-connection {{- end}} - -# This section defines the build project. -build: - # The URI that identifies the Docker image to use for this build project. - image: {{.Build.Image}} - {{$length := len .Stages}}{{if gt $length 0}} # The deployment section defines the order the pipeline will deploy # to your environments. From 2dd9f4c13ff0c6fe446998dfb6d4789eaea620e8 Mon Sep 17 00:00:00 2001 From: git823 Date: Tue, 6 Apr 2021 23:25:53 +0000 Subject: [PATCH 5/6] remove info block --- site/content/docs/manifest/pipeline.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/site/content/docs/manifest/pipeline.md b/site/content/docs/manifest/pipeline.md index 9a53d1049c0..6f0bbb12e96 100644 --- a/site/content/docs/manifest/pipeline.md +++ b/site/content/docs/manifest/pipeline.md @@ -69,9 +69,6 @@ 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. -!!! info - Copilot does not support cross-account ECR repository or private registry other than ECR because [imagePullCredentialsType](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectEnvironment.html#CodeBuild-Type-ProjectEnvironment-imagePullCredentialsType) is fixed to `CODEBUILD`. -
`stages` Array of Maps From ac47e631a094489bf10ec91fb56b08f1e78f0254 Mon Sep 17 00:00:00 2001 From: Efe Karakus Date: Wed, 14 Apr 2021 14:36:30 -0700 Subject: [PATCH 6/6] chore: fix integ tests for pipelines --- .../deploy/cloudformation/stack/bb_pipeline_integration_test.go | 1 + .../deploy/cloudformation/stack/cc_pipeline_integration_test.go | 1 + .../deploy/cloudformation/stack/gh_pipeline_integration_test.go | 1 + 3 files changed, 3 insertions(+) diff --git a/internal/pkg/deploy/cloudformation/stack/bb_pipeline_integration_test.go b/internal/pkg/deploy/cloudformation/stack/bb_pipeline_integration_test.go index 1b01982f116..bd964d01fb4 100644 --- a/internal/pkg/deploy/cloudformation/stack/bb_pipeline_integration_test.go +++ b/internal/pkg/deploy/cloudformation/stack/bb_pipeline_integration_test.go @@ -28,6 +28,7 @@ func TestBB_Pipeline_Template(t *testing.T) { RepositoryURL: "https://huanjani@bitbucket.org/huanjani/sample", Branch: "master", }, + Build: deploy.PipelineBuildFromManifest(nil), Stages: []deploy.PipelineStage{ { AssociatedEnvironment: &deploy.AssociatedEnvironment{ diff --git a/internal/pkg/deploy/cloudformation/stack/cc_pipeline_integration_test.go b/internal/pkg/deploy/cloudformation/stack/cc_pipeline_integration_test.go index cfab706864a..fb1fbd63fd3 100644 --- a/internal/pkg/deploy/cloudformation/stack/cc_pipeline_integration_test.go +++ b/internal/pkg/deploy/cloudformation/stack/cc_pipeline_integration_test.go @@ -28,6 +28,7 @@ func TestCC_Pipeline_Template(t *testing.T) { RepositoryURL: "https://us-west-2.console.aws.amazon.com/codesuite/codecommit/repositories/aws-sample/browse", Branch: "master", }, + Build: deploy.PipelineBuildFromManifest(nil), Stages: []deploy.PipelineStage{ { AssociatedEnvironment: &deploy.AssociatedEnvironment{ diff --git a/internal/pkg/deploy/cloudformation/stack/gh_pipeline_integration_test.go b/internal/pkg/deploy/cloudformation/stack/gh_pipeline_integration_test.go index 4935754e035..49aa35d9069 100644 --- a/internal/pkg/deploy/cloudformation/stack/gh_pipeline_integration_test.go +++ b/internal/pkg/deploy/cloudformation/stack/gh_pipeline_integration_test.go @@ -28,6 +28,7 @@ func TestGHPipeline_Template(t *testing.T) { RepositoryURL: "https://github.com/aws/phonetool", Branch: "mainline", }, + Build: deploy.PipelineBuildFromManifest(nil), Stages: []deploy.PipelineStage{ { AssociatedEnvironment: &deploy.AssociatedEnvironment{