Description: > This template creates an ECR repo, pulls code from the CodeCommit repo builds it on CodeBuild and pushes it to ECR repo created. Parameters: RepoName: Description: CodeCommit Repo Name Type: String Default: swift-product RepoBranch: Description: CodeCommit Repo Branch Type: String Default: master Resources: S3Bucket: Type: "AWS::S3::Bucket" Properties: AccessControl: "PublicRead" BucketName: !Join ['-', [!Ref 'AWS::AccountId', codepipelineartifact]] CodePipelineCodeBuildServiceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: [codepipeline.amazonaws.com, codebuild.amazonaws.com ] Action: ['sts:AssumeRole'] Path: / Policies: - PolicyName: ecs-service PolicyDocument: Statement: - Effect: Allow Action: ['ecr:*', "codebuild:*", "codepipeline:*", "s3:*", "codecommit:*", "logs:*", "cloudwatch:*"] Resource: '*' CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: swiftProject Description: A description about my project ServiceRole: !GetAtt 'CodePipelineCodeBuildServiceRole.Arn' Artifacts: Type: CODEPIPELINE Environment: Type: linuxContainer ComputeType: BUILD_GENERAL1_MEDIUM Image: aws/codebuild/docker:1.12.1 Source: Type: CODEPIPELINE TimeoutInMinutes: 30 AppPipeline: Type: "AWS::CodePipeline::Pipeline" Properties: ArtifactStore: Type: S3 Location: !Ref S3Bucket RoleArn: !GetAtt 'CodePipelineCodeBuildServiceRole.Arn' Stages: - Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: AWS Version: 1 Provider: CodeCommit OutputArtifacts: - Name: "CodePipelineSourceOutputArtifact" Configuration: BranchName: !Ref 'RepoBranch' RepositoryName: !Ref 'RepoName' RunOrder: 1 - Name: Build Actions: - Name: BuildAction InputArtifacts: - Name: "CodePipelineSourceOutputArtifact" ActionTypeId: Category: Build Owner: AWS Version: 1 Provider: CodeBuild Configuration: ProjectName: Ref: CodeBuildProject OutputArtifacts: - Name: "CodePipelineBuildOutputArtifact" RunOrder: 1 Outputs: PipeLineUrl: Value: !Ref 'AppPipeline'