in infra/ecs-service/construct/ecs-cicd-const.ts [26:77]
constructor(scope: cdk.Construct, id: string, props: EcsCicdProps) {
super(scope, id, props);
const sourceOutput = new codepipeline.Artifact();
const sourceAction = new actions.CodeCommitSourceAction({
actionName: 'CodeCommit_SourceMerge',
repository: props.repo,
output: sourceOutput,
branch: 'master'
})
const buildOutput = new codepipeline.Artifact();
const buildAction = new actions.CodeBuildAction({
actionName: 'CodeBuild_DockerBuild',
project: this.createBuildProject(props.ecrRepo, props),
input: sourceOutput,
outputs: [buildOutput],
});
const approvalAction = new actions.ManualApprovalAction({
actionName: 'Manual_Approve',
});
const deployAction = new actions.EcsDeployAction({
actionName: 'ECS_ContainerDeploy',
service: props.service,
imageFile: new codepipeline.ArtifactPath(buildOutput, `${props.appPath}/imagedefinitions.json`),
deploymentTimeout: cdk.Duration.minutes(60)
});
new codepipeline.Pipeline(this, 'ECSServicePipeline', {
pipelineName: `${props.stackName}-Pipeline`,
stages: [
{
stageName: 'Source',
actions: [sourceAction],
},
{
stageName: 'Build',
actions: [buildAction],
},
{
stageName: 'Approve',
actions: [approvalAction],
},
{
stageName: 'Deploy',
actions: [deployAction],
}
]
});
}