diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisher.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisher.assets.json new file mode 100644 index 0000000000000..61502eab63a25 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisher.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "cd6eb8afbb3f1f66b6273301aea8d77f12af2d3e2a880547bf419f59db0e682e": { + "displayName": "PipelineStackSinglePublisher Template", + "source": { + "path": "PipelineStackSinglePublisher.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "cd6eb8afbb3f1f66b6273301aea8d77f12af2d3e2a880547bf419f59db0e682e.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisher.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisher.template.json new file mode 100644 index 0000000000000..2a0abab9e936f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisher.template.json @@ -0,0 +1,1291 @@ +{ + "Resources": { + "Source71E471F1": { + "Type": "AWS::S3::Bucket", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "PipelineArtifactsBucketAEA9A052": { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "SSEAlgorithm": "aws:kms" + } + } + ] + }, + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "PipelineArtifactsBucketPolicyF53CCC52": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "PipelineArtifactsBucketAEA9A052" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": "s3:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": { + "AWS": "*" + }, + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-", + { + "Ref": "AWS::Region" + } + ] + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineRoleB27FAA37": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codepipeline.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineRoleDefaultPolicy7BDC1ABB": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "PipelineSourceS3CodePipelineActionRole83895A58", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-", + { + "Ref": "AWS::Region" + } + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineRoleDefaultPolicy7BDC1ABB", + "Roles": [ + { + "Ref": "PipelineRoleB27FAA37" + } + ] + } + }, + "Pipeline9850B417": { + "Type": "AWS::CodePipeline::Pipeline", + "Properties": { + "ArtifactStore": { + "Location": { + "Ref": "PipelineArtifactsBucketAEA9A052" + }, + "Type": "S3" + }, + "PipelineType": "V2", + "RestartExecutionOnUpdate": true, + "RoleArn": { + "Fn::GetAtt": [ + "PipelineRoleB27FAA37", + "Arn" + ] + }, + "Stages": [ + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Source", + "Owner": "AWS", + "Provider": "S3", + "Version": "1" + }, + "Configuration": { + "S3Bucket": { + "Ref": "Source71E471F1" + }, + "S3ObjectKey": "source.zip" + }, + "Name": { + "Ref": "Source71E471F1" + }, + "OutputArtifacts": [ + { + "Name": "c86fd7543e0b518dd70c4722b87c7d60b65f46e099_Source" + } + ], + "RoleArn": { + "Fn::GetAtt": [ + "PipelineSourceS3CodePipelineActionRole83895A58", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "Source" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1" + }, + "Configuration": { + "ProjectName": { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + }, + "EnvironmentVariables": "[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"9846e726ec481ed25679c0170187f40b4920586fd0e7314d24f56620d9f53f5b\"}]" + }, + "InputArtifacts": [ + { + "Name": "c86fd7543e0b518dd70c4722b87c7d60b65f46e099_Source" + } + ], + "Name": "Synth", + "OutputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "RoleArn": { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "Build" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1" + }, + "Configuration": { + "ProjectName": { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + }, + "EnvironmentVariables": "[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"d1203b77c488ea5cb9c3bf11fd3725008d32a3897b3dacac7efa0db4d8d2b4cc\"}]" + }, + "InputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "Name": "SelfMutate", + "RoleArn": { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "UpdatePipeline" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1" + }, + "Configuration": { + "ProjectName": { + "Ref": "PipelineAssetsFileAsset5D8C5DA6" + } + }, + "InputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "Name": "FileAssets", + "RoleArn": { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "Assets" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1" + }, + "Configuration": { + "StackName": "Beta-Stack1", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + { + "Ref": "AWS::AccountId" + }, + "-", + { + "Ref": "AWS::Region" + } + ] + ] + }, + "ActionMode": "CHANGE_SET_REPLACE", + "ChangeSetName": "PipelineChange", + "TemplatePath": "Synth_Output::assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.template.json" + }, + "InputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "Name": "Prepare", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-", + { + "Ref": "AWS::Region" + } + ] + ] + }, + "RunOrder": 1 + }, + { + "ActionTypeId": { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1" + }, + "Configuration": { + "StackName": "Beta-Stack1", + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange" + }, + "Name": "Deploy", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-", + { + "Ref": "AWS::Region" + } + ] + ] + }, + "RunOrder": 2 + } + ], + "Name": "Beta" + } + ] + }, + "DependsOn": [ + "PipelineRoleDefaultPolicy7BDC1ABB", + "PipelineRoleB27FAA37" + ] + }, + "PipelineSourceS3CodePipelineActionRole83895A58": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "PipelineRoleB27FAA37", + "Arn" + ] + } + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "Source71E471F1", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "Source71E471F1", + "Arn" + ] + }, + "/source.zip" + ] + ] + } + ] + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F", + "Roles": [ + { + "Ref": "PipelineSourceS3CodePipelineActionRole83895A58" + } + ] + } + }, + "PipelineBuildSynthCdkBuildProjectRole231EEA2A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codebuild.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":logs:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":logs:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + } + ] + ] + } + ] + }, + { + "Action": [ + "codebuild:BatchPutCodeCoverages", + "codebuild:BatchPutTestCases", + "codebuild:CreateReport", + "codebuild:CreateReportGroup", + "codebuild:UpdateReport" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":codebuild:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":report-group/", + { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + }, + "-*" + ] + ] + } + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C", + "Roles": [ + { + "Ref": "PipelineBuildSynthCdkBuildProjectRole231EEA2A" + } + ] + } + }, + "PipelineBuildSynthCdkBuildProject6BEFA8E6": { + "Type": "AWS::CodeBuild::Project", + "Properties": { + "Artifacts": { + "Type": "CODEPIPELINE" + }, + "Cache": { + "Type": "NO_CACHE" + }, + "Description": "Pipeline step PipelineStackSinglePublisher/Pipeline/Build/Synth", + "EncryptionKey": "alias/aws/s3", + "Environment": { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:7.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER" + }, + "ServiceRole": { + "Fn::GetAtt": [ + "PipelineBuildSynthCdkBuildProjectRole231EEA2A", + "Arn" + ] + }, + "Source": { + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"build\": {\n \"commands\": [\n \"npm ci\",\n \"npm run build\",\n \"npx cdk synth\"\n ]\n }\n },\n \"artifacts\": {\n \"base-directory\": \"cdk.out\",\n \"files\": \"**/*\"\n }\n}", + "Type": "CODEPIPELINE" + } + } + }, + "PipelineCodeBuildActionRole226DB0CB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "PipelineRoleB27FAA37", + "Arn" + ] + } + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineAssetsFileAsset5D8C5DA6", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "PipelineBuildSynthCdkBuildProject6BEFA8E6", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "PipelineUpdatePipelineSelfMutationDAA41400", + "Arn" + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE", + "Roles": [ + { + "Ref": "PipelineCodeBuildActionRole226DB0CB" + } + ] + } + }, + "PipelineUpdatePipelineSelfMutationRole57E559E8": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codebuild.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":logs:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":logs:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + } + ] + ] + } + ] + }, + { + "Action": [ + "codebuild:BatchPutCodeCoverages", + "codebuild:BatchPutTestCases", + "codebuild:CreateReport", + "codebuild:CreateReportGroup", + "codebuild:UpdateReport" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":codebuild:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":report-group/", + { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + }, + "-*" + ] + ] + } + }, + { + "Action": "sts:AssumeRole", + "Condition": { + "ForAnyValue:StringEquals": { + "iam:ResourceTag/aws-cdk:bootstrap-role": [ + "image-publishing", + "file-publishing", + "deploy" + ] + } + }, + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:*:iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/*" + ] + ] + } + }, + { + "Action": [ + "cloudformation:DescribeStacks", + "s3:ListBucket" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E", + "Roles": [ + { + "Ref": "PipelineUpdatePipelineSelfMutationRole57E559E8" + } + ] + } + }, + "PipelineUpdatePipelineSelfMutationDAA41400": { + "Type": "AWS::CodeBuild::Project", + "Properties": { + "Artifacts": { + "Type": "CODEPIPELINE" + }, + "Cache": { + "Type": "NO_CACHE" + }, + "Description": "Pipeline step PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutate", + "EncryptionKey": "alias/aws/s3", + "Environment": { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:7.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER" + }, + "ServiceRole": { + "Fn::GetAtt": [ + "PipelineUpdatePipelineSelfMutationRole57E559E8", + "Arn" + ] + }, + "Source": { + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g aws-cdk@2\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk -a . deploy PipelineStackSinglePublisher --require-approval=never --verbose\"\n ]\n }\n }\n}", + "Type": "CODEPIPELINE" + } + } + }, + "PipelineAssetsFileRole59943A77": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codebuild.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineAssetsFileRoleDefaultPolicy14DB8755": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":logs:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/*" + ] + ] + } + }, + { + "Action": [ + "codebuild:BatchPutCodeCoverages", + "codebuild:BatchPutTestCases", + "codebuild:CreateReport", + "codebuild:CreateReportGroup", + "codebuild:UpdateReport" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":codebuild:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":report-group/*" + ] + ] + } + }, + { + "Action": [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineAssetsFileRoleDefaultPolicy14DB8755", + "Roles": [ + { + "Ref": "PipelineAssetsFileRole59943A77" + } + ] + } + }, + "PipelineAssetsFileAsset5D8C5DA6": { + "Type": "AWS::CodeBuild::Project", + "Properties": { + "Artifacts": { + "Type": "CODEPIPELINE" + }, + "Cache": { + "Type": "NO_CACHE" + }, + "Description": "Pipeline step PipelineStackSinglePublisher/Pipeline/Assets/FileAssets", + "EncryptionKey": "alias/aws/s3", + "Environment": { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:7.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER" + }, + "ServiceRole": { + "Fn::GetAtt": [ + "PipelineAssetsFileRole59943A77", + "Arn" + ] + }, + "Source": { + "BuildSpec": "buildspec-c85b5a918443ddfc06c0be9a2655c12b81b6b1c88f-FileAsset.yaml", + "Type": "CODEPIPELINE" + } + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherPipeline201D00C8.dot b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherPipeline201D00C8.dot new file mode 100644 index 0000000000000..b7ce1da6f73ad --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherPipeline201D00C8.dot @@ -0,0 +1,45 @@ +digraph G { + # Arrows represent an "unlocks" relationship (opposite of dependency). So chosen + # because the layout looks more natural that way. + # To represent subgraph dependencies, subgraphs are represented by BEGIN/END nodes. + # To render: `dot -Tsvg PipelineStackSinglePublisherPipeline201D00C8.dot > graph.svg`, open in a browser. + node [shape="box"]; +"BEGIN Build" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Build" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Build.Synth"; +"Source.c86fd7543e0b518dd70c4722b87c7d60b65f46e099" -> "Build.Synth"; +"BEGIN Build" -> "Build.Synth"; +"Build.Synth" -> "END Build"; +"BEGIN UpdatePipeline" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END UpdatePipeline" [shape="cds", style="filled", fillcolor="#b7deff"]; +"UpdatePipeline.SelfMutate"; +"Build.Synth" -> "UpdatePipeline.SelfMutate"; +"BEGIN UpdatePipeline" -> "UpdatePipeline.SelfMutate"; +"UpdatePipeline.SelfMutate" -> "END UpdatePipeline"; +"BEGIN Assets" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Assets" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Assets.FileAsset"; +"UpdatePipeline.SelfMutate" -> "Assets.FileAsset"; +"BEGIN Assets" -> "Assets.FileAsset"; +"Assets.FileAsset" -> "END Assets"; +"BEGIN Beta" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Beta" [shape="cds", style="filled", fillcolor="#b7deff"]; +"UpdatePipeline.SelfMutate" -> "BEGIN Beta"; +"BEGIN Beta.Stack1" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Beta.Stack1" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Beta.Stack1.Deploy"; +"Beta.Stack1.Prepare" -> "Beta.Stack1.Deploy"; +"Beta.Stack1.Prepare"; +"Build.Synth" -> "Beta.Stack1.Prepare"; +"Assets.FileAsset" -> "Beta.Stack1.Prepare"; +"Assets.FileAsset" -> "Beta.Stack1.Prepare"; +"BEGIN Beta.Stack1" -> "Beta.Stack1.Prepare"; +"Beta.Stack1.Deploy" -> "END Beta.Stack1"; +"BEGIN Beta" -> "BEGIN Beta.Stack1"; +"END Beta.Stack1" -> "END Beta"; +"BEGIN Source" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Source" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Source.c86fd7543e0b518dd70c4722b87c7d60b65f46e099"; +"BEGIN Source" -> "Source.c86fd7543e0b518dd70c4722b87c7d60b65f46e099"; +"Source.c86fd7543e0b518dd70c4722b87c7d60b65f46e099" -> "END Source"; +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.assets.json new file mode 100644 index 0000000000000..7a6e7bf5cadbe --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07 Template", + "source": { + "path": "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.assets.json new file mode 100644 index 0000000000000..968273980171b --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.assets.json @@ -0,0 +1,48 @@ +{ + "version": "44.0.0", + "files": { + "8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5": { + "displayName": "Asset", + "source": { + "path": "../asset.8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5.txt", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5.txt", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e": { + "displayName": "Asset2", + "source": { + "path": "../asset.ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e.txt", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e.txt", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "9b0251342ce12f30650bbf24424c57aba9857cc654420b1deff1533588801ceb": { + "displayName": "Beta-Stack1 Template", + "source": { + "path": "PipelineStackSinglePublisherBetaStack14FCF5B0A.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "9b0251342ce12f30650bbf24424c57aba9857cc654420b1deff1533588801ceb.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.template.json new file mode 100644 index 0000000000000..ff637d8537075 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.template.json @@ -0,0 +1,43 @@ +{ + "Resources": { + "OtherQueue60B686DC": { + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/manifest.json new file mode 100644 index 0000000000000..92aa7b83ac3a9 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/assembly-PipelineStackSinglePublisher-Beta/manifest.json @@ -0,0 +1,67 @@ +{ + "version": "44.0.0", + "artifacts": { + "PipelineStackSinglePublisherBetaStack14FCF5B0A.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "PipelineStackSinglePublisherBetaStack14FCF5B0A.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "PipelineStackSinglePublisherBetaStack14FCF5B0A": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "PipelineStackSinglePublisherBetaStack14FCF5B0A.template.json", + "terminationProtection": false, + "validateOnSynth": true, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/9b0251342ce12f30650bbf24424c57aba9857cc654420b1deff1533588801ceb.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "PipelineStackSinglePublisherBetaStack14FCF5B0A.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + }, + "stackName": "Beta-Stack1" + }, + "dependencies": [ + "PipelineStackSinglePublisherBetaStack14FCF5B0A.assets" + ], + "metadata": { + "/PipelineStackSinglePublisher/Beta/Stack1/OtherQueue": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Beta/Stack1/OtherQueue/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OtherQueue60B686DC" + } + ], + "/PipelineStackSinglePublisher/Beta/Stack1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/PipelineStackSinglePublisher/Beta/Stack1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "PipelineStackSinglePublisher/Beta/Stack1" + } + }, + "minimumCliVersion": "2.1018.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/asset.8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5.txt b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/asset.8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5.txt new file mode 100644 index 0000000000000..95e9dcd2e3bf0 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/asset.8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5.txt @@ -0,0 +1 @@ +This is a file asset that's just here for kicks. \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/asset.ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e.txt b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/asset.ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e.txt new file mode 100644 index 0000000000000..8b1c7231bf2f4 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/asset.ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e.txt @@ -0,0 +1 @@ +Here's a second file asset. \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/buildspec-c85b5a918443ddfc06c0be9a2655c12b81b6b1c88f-FileAsset.yaml b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/buildspec-c85b5a918443ddfc06c0be9a2655c12b81b6b1c88f-FileAsset.yaml new file mode 100644 index 0000000000000..69eb2fc6abe6c --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/buildspec-c85b5a918443ddfc06c0be9a2655c12b81b6b1c88f-FileAsset.yaml @@ -0,0 +1,16 @@ +{ + "version": "0.2", + "phases": { + "install": { + "commands": [ + "npm install -g cdk-assets@latest" + ] + }, + "build": { + "commands": [ + "cdk-assets --path \"assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.assets.json\" --verbose publish \"8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5:current_account-current_region\"", + "cdk-assets --path \"assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.assets.json\" --verbose publish \"ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e:current_account-current_region\"" + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/integ.json new file mode 100644 index 0000000000000..b2a6ecc68dc89 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "44.0.0", + "testCases": { + "PipelineStackSinglePublisher-integ/DefaultTest": { + "stacks": [ + "PipelineStackSinglePublisher" + ], + "assertionStack": "PipelineStackSinglePublisher-integ/DefaultTest/DeployAssert", + "assertionStackName": "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07" + } + }, + "minimumCliVersion": "2.1018.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/manifest.json new file mode 100644 index 0000000000000..f58224d23398d --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/manifest.json @@ -0,0 +1,1380 @@ +{ + "version": "44.0.0", + "artifacts": { + "assembly-PipelineStackSinglePublisher-Beta": { + "type": "cdk:cloud-assembly", + "properties": { + "directoryName": "assembly-PipelineStackSinglePublisher-Beta", + "displayName": "PipelineStackSinglePublisher/Beta" + } + }, + "PipelineStackSinglePublisher.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "PipelineStackSinglePublisher.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "PipelineStackSinglePublisher": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "PipelineStackSinglePublisher.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/cd6eb8afbb3f1f66b6273301aea8d77f12af2d3e2a880547bf419f59db0e682e.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "PipelineStackSinglePublisher.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "PipelineStackSinglePublisher.assets" + ], + "metadata": { + "/PipelineStackSinglePublisher/Source": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy" + } + } + ], + "/PipelineStackSinglePublisher/Source/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Source71E471F1" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "pipelineName": "*", + "pipelineType": "V2", + "crossAccountKeys": false, + "crossRegionReplicationBuckets": "*", + "reuseCrossRegionSupportStacks": "*", + "restartExecutionOnUpdate": true, + "role": "*", + "enableKeyRotation": "*", + "artifactBucket": "*", + "usePipelineRoleForActions": false + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucketName": "*", + "encryptionKey": "*", + "encryption": "KMS_MANAGED", + "enforceSSL": true, + "blockPublicAccess": "*", + "removalPolicy": "retain" + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineArtifactsBucketAEA9A052" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineArtifactsBucketPolicyF53CCC52" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "roleName": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineRoleB27FAA37" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineRoleDefaultPolicy7BDC1ABB" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Pipeline9850B417" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/ImportCodePipelineActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineSourceS3CodePipelineActionRole83895A58" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineBuildSynthCdkBuildProjectRole231EEA2A" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/ImportCodeBuildActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineCodeBuildActionRole226DB0CB" + } + ], + "/PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE" + } + ], + "/PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], + "/PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineUpdatePipelineSelfMutationRole57E559E8" + } + ], + "/PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E" + } + ], + "/PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineUpdatePipelineSelfMutationDAA41400" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Assets/FileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Assets/FileRole/ImportFileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Assets/FileRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineAssetsFileRole59943A77" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Assets/FileRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/PipelineStackSinglePublisher/Pipeline/Assets/FileRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineAssetsFileRoleDefaultPolicy14DB8755" + } + ], + "/PipelineStackSinglePublisher/Pipeline/Assets/FileAsset": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], + "/PipelineStackSinglePublisher/Pipeline/Assets/FileAsset/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineAssetsFileAsset5D8C5DA6" + } + ], + "/PipelineStackSinglePublisher/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/PipelineStackSinglePublisher/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "PipelineStackSinglePublisher" + }, + "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "PipelineStackSinglePublisherintegDefaultTestDeployAssertCDD49B07.assets" + ], + "metadata": { + "/PipelineStackSinglePublisher-integ/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/PipelineStackSinglePublisher-integ/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "PipelineStackSinglePublisher-integ/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1018.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/tree.json new file mode 100644 index 0000000000000..6271ab928bd04 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"PipelineStackSinglePublisher":{"id":"PipelineStackSinglePublisher","path":"PipelineStackSinglePublisher","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Source":{"id":"Source","path":"PipelineStackSinglePublisher/Source","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Source/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{}}}}},"Pipeline":{"id":"Pipeline","path":"PipelineStackSinglePublisher/Pipeline","constructInfo":{"fqn":"aws-cdk-lib.pipelines.CodePipeline","version":"0.0.0"},"children":{"Pipeline":{"id":"Pipeline","path":"PipelineStackSinglePublisher/Pipeline/Pipeline","constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.Pipeline","version":"0.0.0","metadata":[{"pipelineName":"*","pipelineType":"V2","crossAccountKeys":false,"crossRegionReplicationBuckets":"*","reuseCrossRegionSupportStacks":"*","restartExecutionOnUpdate":true,"role":"*","enableKeyRotation":"*","artifactBucket":"*","usePipelineRoleForActions":false},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]}]},"children":{"ArtifactsBucket":{"id":"ArtifactsBucket","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"bucketName":"*","encryptionKey":"*","encryption":"KMS_MANAGED","enforceSSL":true,"blockPublicAccess":"*","removalPolicy":"retain"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms"}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}}},"Policy":{"id":"Policy","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/ArtifactsBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"PipelineArtifactsBucketAEA9A052"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}}}},"Role":{"id":"Role","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"roleName":"*"},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codepipeline.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]},{"Fn::GetAtt":["PipelineSourceS3CodePipelineActionRole83895A58","Arn"]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}]}],"Version":"2012-10-17"},"policyName":"PipelineRoleDefaultPolicy7BDC1ABB","roles":[{"Ref":"PipelineRoleB27FAA37"}]}}}}}}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.CfnPipeline","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodePipeline::Pipeline","aws:cdk:cloudformation:props":{"artifactStore":{"type":"S3","location":{"Ref":"PipelineArtifactsBucketAEA9A052"}},"pipelineType":"V2","restartExecutionOnUpdate":true,"roleArn":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]},"stages":[{"name":"Source","actions":[{"name":{"Ref":"Source71E471F1"},"outputArtifacts":[{"name":"c86fd7543e0b518dd70c4722b87c7d60b65f46e099_Source"}],"actionTypeId":{"category":"Source","version":"1","owner":"AWS","provider":"S3"},"configuration":{"S3Bucket":{"Ref":"Source71E471F1"},"S3ObjectKey":"source.zip"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineSourceS3CodePipelineActionRole83895A58","Arn"]}}]},{"name":"Build","actions":[{"name":"Synth","inputArtifacts":[{"name":"c86fd7543e0b518dd70c4722b87c7d60b65f46e099_Source"}],"outputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"9846e726ec481ed25679c0170187f40b4920586fd0e7314d24f56620d9f53f5b\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"UpdatePipeline","actions":[{"name":"SelfMutate","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"d1203b77c488ea5cb9c3bf11fd3725008d32a3897b3dacac7efa0db4d8d2b4cc\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Assets","actions":[{"name":"FileAssets","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineAssetsFileAsset5D8C5DA6"}},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Beta","actions":[{"name":"Prepare","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Beta-Stack1","Capabilities":"CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND","RoleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-cfn-exec-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]},"ActionMode":"CHANGE_SET_REPLACE","ChangeSetName":"PipelineChange","TemplatePath":"Synth_Output::assembly-PipelineStackSinglePublisher-Beta/PipelineStackSinglePublisherBetaStack14FCF5B0A.template.json"},"runOrder":1,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}},{"name":"Deploy","actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Beta-Stack1","ActionMode":"CHANGE_SET_EXECUTE","ChangeSetName":"PipelineChange"},"runOrder":2,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}}]}]}}},"Source":{"id":"Source","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Source","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"S3":{"id":"S3","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"CodePipelineActionRole":{"id":"CodePipelineActionRole","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportCodePipelineActionRole":{"id":"ImportCodePipelineActionRole","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/ImportCodePipelineActionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["Source71E471F1","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["Source71E471F1","Arn"]},"/source.zip"]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F","roles":[{"Ref":"PipelineSourceS3CodePipelineActionRole83895A58"}]}}}}}}}}}}},"Build":{"id":"Build","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Synth":{"id":"Synth","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"CdkBuildProject":{"id":"CdkBuildProject","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Role":{"id":"Role","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},":*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"-*"]]}},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C","roles":[{"Ref":"PipelineBuildSynthCdkBuildProjectRole231EEA2A"}]}}}}}}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStackSinglePublisher/Pipeline/Build/Synth","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProjectRole231EEA2A","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"build\": {\n \"commands\": [\n \"npm ci\",\n \"npm run build\",\n \"npx cdk synth\"\n ]\n }\n },\n \"artifacts\": {\n \"base-directory\": \"cdk.out\",\n \"files\": \"**/*\"\n }\n}"}}}}}}}}}},"UpdatePipeline":{"id":"UpdatePipeline","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/UpdatePipeline","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"SelfMutate":{"id":"SelfMutate","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/UpdatePipeline/SelfMutate","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Assets":{"id":"Assets","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Assets","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"FileAssets":{"id":"FileAssets","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Assets/FileAssets","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Beta":{"id":"Beta","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Beta","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Prepare":{"id":"Prepare","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Beta/Prepare","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Deploy":{"id":"Deploy","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/Beta/Deploy","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*","*","*","*","*","*"]},"children":{"8389e75f-0810-4838-bf64-d6f85a95cf83":{"id":"8389e75f-0810-4838-bf64-d6f85a95cf83","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}/8389e75f-0810-4838-bf64-d6f85a95cf83","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStackSinglePublisher/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}}}},"CodeBuildActionRole":{"id":"CodeBuildActionRole","path":"PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":"*"},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportCodeBuildActionRole":{"id":"ImportCodeBuildActionRole","path":"PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/ImportCodeBuildActionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/CodeBuildActionRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineAssetsFileAsset5D8C5DA6","Arn"]},{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProject6BEFA8E6","Arn"]},{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationDAA41400","Arn"]}]}],"Version":"2012-10-17"},"policyName":"PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE","roles":[{"Ref":"PipelineCodeBuildActionRole226DB0CB"}]}}}}}}},"UpdatePipeline":{"id":"UpdatePipeline","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"SelfMutation":{"id":"SelfMutation","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Role":{"id":"Role","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},":*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"-*"]]}},{"Action":"sts:AssumeRole","Condition":{"ForAnyValue:StringEquals":{"iam:ResourceTag/aws-cdk:bootstrap-role":["image-publishing","file-publishing","deploy"]}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:*:iam::",{"Ref":"AWS::AccountId"},":role/*"]]}},{"Action":["cloudformation:DescribeStacks","s3:ListBucket"],"Effect":"Allow","Resource":"*"},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E","roles":[{"Ref":"PipelineUpdatePipelineSelfMutationRole57E559E8"}]}}}}}}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutation/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStackSinglePublisher/Pipeline/UpdatePipeline/SelfMutate","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationRole57E559E8","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g aws-cdk@2\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk -a . deploy PipelineStackSinglePublisher --require-approval=never --verbose\"\n ]\n }\n }\n}"}}}}}}}},"Assets":{"id":"Assets","path":"PipelineStackSinglePublisher/Pipeline/Assets","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"FileRole":{"id":"FileRole","path":"PipelineStackSinglePublisher/Pipeline/Assets/FileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportFileRole":{"id":"ImportFileRole","path":"PipelineStackSinglePublisher/Pipeline/Assets/FileRole/ImportFileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Assets/FileRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStackSinglePublisher/Pipeline/Assets/FileRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Assets/FileRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/*"]]}},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/*"]]}},{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":"*"},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":{"Fn::Sub":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineAssetsFileRoleDefaultPolicy14DB8755","roles":[{"Ref":"PipelineAssetsFileRole59943A77"}]}}}}}}},"FileAsset":{"id":"FileAsset","path":"PipelineStackSinglePublisher/Pipeline/Assets/FileAsset","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Pipeline/Assets/FileAsset/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStackSinglePublisher/Pipeline/Assets/FileAssets","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineAssetsFileRole59943A77","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"buildspec-c85b5a918443ddfc06c0be9a2655c12b81b6b1c88f-FileAsset.yaml"}}}}}}}}}},"Beta":{"id":"Beta","path":"PipelineStackSinglePublisher/Beta","constructInfo":{"fqn":"aws-cdk-lib.Stage","version":"0.0.0"},"children":{"Stack1":{"id":"Stack1","path":"PipelineStackSinglePublisher/Beta/Stack1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Asset":{"id":"Asset","path":"PipelineStackSinglePublisher/Beta/Stack1/Asset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"PipelineStackSinglePublisher/Beta/Stack1/Asset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"PipelineStackSinglePublisher/Beta/Stack1/Asset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Asset2":{"id":"Asset2","path":"PipelineStackSinglePublisher/Beta/Stack1/Asset2","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"PipelineStackSinglePublisher/Beta/Stack1/Asset2/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"PipelineStackSinglePublisher/Beta/Stack1/Asset2/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"OtherQueue":{"id":"OtherQueue","path":"PipelineStackSinglePublisher/Beta/Stack1/OtherQueue","constructInfo":{"fqn":"aws-cdk-lib.aws_sqs.Queue","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"PipelineStackSinglePublisher/Beta/Stack1/OtherQueue/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_sqs.CfnQueue","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::SQS::Queue","aws:cdk:cloudformation:props":{}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineStackSinglePublisher/Beta/Stack1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineStackSinglePublisher/Beta/Stack1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineStackSinglePublisher/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineStackSinglePublisher/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"PipelineStackSinglePublisher-integ":{"id":"PipelineStackSinglePublisher-integ","path":"PipelineStackSinglePublisher-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"PipelineStackSinglePublisher-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"PipelineStackSinglePublisher-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"PipelineStackSinglePublisher-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineStackSinglePublisher-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineStackSinglePublisher-integ/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.ts b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.ts new file mode 100644 index 0000000000000..e0b7f4fa3cc42 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-single-publisher.ts @@ -0,0 +1,53 @@ +import * as path from 'path'; +import * as s3 from 'aws-cdk-lib/aws-s3'; +import * as s3_assets from 'aws-cdk-lib/aws-s3-assets'; +import * as sqs from 'aws-cdk-lib/aws-sqs'; +import * as pipelines from 'aws-cdk-lib/pipelines'; +import { App, RemovalPolicy, Stack, StackProps, Stage, StageProps } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import { IntegTest } from '@aws-cdk/integ-tests-alpha'; + +class PipelineStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps) { + super(scope, id, props); + + const bucket = new s3.Bucket(this, 'Source', { + removalPolicy: RemovalPolicy.DESTROY, + }); + const pipeline = new pipelines.CodePipeline(this, 'Pipeline', { + synth: new pipelines.ShellStep('Synth', { + input: pipelines.CodePipelineSource.s3(bucket, 'source.zip'), + commands: [ + 'npm ci', + 'npm run build', + 'npx cdk synth', + ], + }), + publishAssetsInParallel: false, + }); + + pipeline.addStage(new AppStage(this, 'Beta')); + } +} + +class AppStage extends Stage { + constructor(scope: Construct, id: string, props?: StageProps) { + super(scope, id, props); + + const stack = new Stack(this, 'Stack1'); + new s3_assets.Asset(stack, 'Asset', { + path: path.join(__dirname, 'testhelpers/assets/test-file-asset.txt'), + }); + new s3_assets.Asset(stack, 'Asset2', { + path: path.join(__dirname, 'testhelpers/assets/test-file-asset-two.txt'), + }); + + new sqs.Queue(stack, 'OtherQueue'); + } +} + +const app = new App(); +const stack = new PipelineStack(app, 'PipelineStackSinglePublisher'); +new IntegTest(app, 'PipelineStackSinglePublisher-integ', { + testCases: [stack], +}); diff --git a/packages/aws-cdk-lib/pipelines/lib/helpers-internal/pipeline-graph.ts b/packages/aws-cdk-lib/pipelines/lib/helpers-internal/pipeline-graph.ts index b3d2c2c2ab3c8..8474fa8c6c8e2 100644 --- a/packages/aws-cdk-lib/pipelines/lib/helpers-internal/pipeline-graph.ts +++ b/packages/aws-cdk-lib/pipelines/lib/helpers-internal/pipeline-graph.ts @@ -344,8 +344,11 @@ export class PipelineGraph { const id = stackAsset.assetType === AssetType.FILE ? (this.singlePublisher ? 'FileAsset' : `FileAsset${++this._fileAssetCtr}`) : (this.singlePublisher ? 'DockerAsset' : `DockerAsset${++this._dockerAssetCtr}`); + const displayName = this.singlePublisher + ? getDisplayNameForSinglePublishStep(stackAsset.assetType) + : stackAsset.displayName; - assetNode = aGraphNode(id, { type: 'publish-assets', assets: [] }, stackAsset.displayName); + assetNode = aGraphNode(id, { type: 'publish-assets', assets: [] }, displayName); assetsGraph.add(assetNode); assetNode.dependOn(this.lastPreparationNode); @@ -429,3 +432,12 @@ function findUniqueName(parent: Graph, parts: string[]): string { } return parts.join('.'); } + +function getDisplayNameForSinglePublishStep(type: AssetType) { + switch (type) { + case AssetType.FILE: + return 'FileAssets'; + case AssetType.DOCKER_IMAGE: + return 'DockerAssets'; + } +} diff --git a/packages/aws-cdk-lib/pipelines/test/codepipeline/codepipeline.test.ts b/packages/aws-cdk-lib/pipelines/test/codepipeline/codepipeline.test.ts index 26e53876f2aaf..b6b83f9b92016 100644 --- a/packages/aws-cdk-lib/pipelines/test/codepipeline/codepipeline.test.ts +++ b/packages/aws-cdk-lib/pipelines/test/codepipeline/codepipeline.test.ts @@ -575,6 +575,32 @@ test('assets can have display names that conflict with calculated action names', }); }); +test('action name does not reflect display names if publishAssetsInParallel is false', () => { + const pipelineStack = new cdk.Stack(app, 'PipelineStack', { env: PIPELINE_ENV }); + const pipeline = new ModernTestGitHubNpmPipeline(pipelineStack, 'Cdk', { + publishAssetsInParallel: false, + }); + pipeline.addStage(new MultipleFileAssetsApp(pipelineStack, 'App', { + n: 2, + displayNames: ['asdf1', 'asdf2'], + })); + + // THEN + const template = Template.fromStack(pipelineStack); + + // We expect a single `FileAsset` action in the pipeline + template.hasResourceProperties('AWS::CodePipeline::Pipeline', { + Stages: Match.arrayWith([{ + Name: 'Assets', + Actions: [ + Match.objectLike({ + Name: 'FileAssets', + }), + ], + }]), + }); +}); + test('action name is calculated properly if it has cross-stack dependencies', () => { // GIVEN const pipelineStack = new cdk.Stack(app, 'PipelineStack', { env: PIPELINE_ENV }); diff --git a/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts b/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts index 426537d74eeea..0873f1e198fc1 100644 --- a/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts +++ b/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts @@ -594,7 +594,7 @@ describe('pipeline with single asset publisher', () => { Name: 'Assets', Actions: [ // Only one file asset action - Match.objectLike({ RunOrder: 1, Name: 'Asset1' }), + Match.objectLike({ RunOrder: 1, Name: 'FileAssets' }), ], }]), }); @@ -643,7 +643,7 @@ describe('pipeline with custom asset publisher BuildSpec', () => { Name: 'Assets', Actions: [ // Only one file asset action - Match.objectLike({ RunOrder: 1, Name: 'Asset1' }), + Match.objectLike({ RunOrder: 1, Name: 'FileAssets' }), ], }]), });