@@ -9,11 +9,11 @@ Parameters:
9
9
ProjectName :
10
10
Type : String
11
11
Description : The name of the CodeBuild Project
12
- Default : java-esdk-prod
12
+ Default : AWS-ESDK-Java
13
13
ProjectDescription :
14
14
Type : String
15
15
Description : The description for the CodeBuild Project
16
- Default : CFN stack for managing CodeBuild Release project for the ESDK- Java
16
+ Default : CFN stack for managing CodeBuild projects for the AWS ESDK Java
17
17
SourceLocation :
18
18
Type : String
19
19
Description : The https GitHub URL for the project
@@ -22,7 +22,7 @@ Parameters:
22
22
Type : Number
23
23
MaxValue : 100
24
24
MinValue : 1
25
- Default : 10
25
+ Default : 16
26
26
Description : The number of builds you expect to run in a batch
27
27
Metadata :
28
28
" AWS::CloudFormation::Interface " :
@@ -34,14 +34,65 @@ Metadata:
34
34
- ProjectDescription
35
35
- SourceLocation
36
36
Resources :
37
+ CodeBuildProjectCI :
38
+ Type : " AWS::CodeBuild::Project"
39
+ Properties :
40
+ Name : !Sub "${ProjectName}-CI"
41
+ Description : !Sub "CI for the Java ESDK"
42
+ Source :
43
+ Location : !Ref SourceLocation
44
+ BuildSpec : codebuild/ci/ci.yml
45
+ GitCloneDepth : 1
46
+ GitSubmodulesConfig :
47
+ FetchSubmodules : false
48
+ InsecureSsl : false
49
+ ReportBuildStatus : false
50
+ Type : GITHUB
51
+ Triggers :
52
+ BuildType : BUILD_BATCH
53
+ Webhook : true
54
+ FilterGroups :
55
+ - - Type : EVENT
56
+ Pattern : PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED
57
+ Artifacts :
58
+ Type : NO_ARTIFACTS
59
+ Cache :
60
+ Type : NO_CACHE
61
+ Environment :
62
+ ComputeType : BUILD_GENERAL1_LARGE
63
+ Image : " aws/codebuild/standard:5.0"
64
+ ImagePullCredentialsType : CODEBUILD
65
+ PrivilegedMode : false
66
+ Type : LINUX_CONTAINER
67
+ ServiceRole : !GetAtt CodeBuildServiceRoleCI.Arn
68
+ TimeoutInMinutes : 60
69
+ QueuedTimeoutInMinutes : 480
70
+ EncryptionKey : !Sub "arn:aws:kms:${AWS::Region}:${AWS::AccountId}:alias/aws/s3"
71
+ BadgeEnabled : false
72
+ BuildBatchConfig :
73
+ ServiceRole : !GetAtt CodeBuildServiceRoleCI.Arn
74
+ Restrictions :
75
+ MaximumBuildsAllowed : !Ref NumberOfBuildsInBatch
76
+ ComputeTypesAllowed :
77
+ - BUILD_GENERAL1_SMALL
78
+ - BUILD_GENERAL1_MEDIUM
79
+ - BUILD_GENERAL1_LARGE
80
+ TimeoutInMins : 480
81
+ LogsConfig :
82
+ CloudWatchLogs :
83
+ Status : ENABLED
84
+ S3Logs :
85
+ Status : DISABLED
86
+ EncryptionDisabled : false
87
+
37
88
CodeBuildProjectRelease :
38
89
Type : " AWS::CodeBuild::Project"
39
90
Properties :
40
- Name : !Sub "${ProjectName}-release-prod "
91
+ Name : !Sub "${ProjectName}-Release "
41
92
Description : !Sub "CodeBuild project for ${ProjectName} to release to Sonatype."
42
93
Source :
43
94
Location : !Ref SourceLocation
44
- BuildSpec : codebuild/release/prod- release.yml
95
+ BuildSpec : codebuild/release/release.yml
45
96
GitCloneDepth : 1
46
97
GitSubmodulesConfig :
47
98
FetchSubmodules : false
@@ -54,17 +105,17 @@ Resources:
54
105
Type : NO_CACHE
55
106
Environment :
56
107
ComputeType : BUILD_GENERAL1_LARGE
57
- Image : " aws/codebuild/standard:4 .0"
108
+ Image : " aws/codebuild/standard:5 .0"
58
109
ImagePullCredentialsType : CODEBUILD
59
110
PrivilegedMode : false
60
111
Type : LINUX_CONTAINER
61
- ServiceRole : !GetAtt CodeBuildServiceRole .Arn
112
+ ServiceRole : !GetAtt CodeBuildServiceRoleRelease .Arn
62
113
TimeoutInMinutes : 60
63
114
QueuedTimeoutInMinutes : 480
64
115
EncryptionKey : !Sub "arn:aws:kms:${AWS::Region}:${AWS::AccountId}:alias/aws/s3"
65
116
BadgeEnabled : false
66
117
BuildBatchConfig :
67
- ServiceRole : !GetAtt CodeBuildServiceRole .Arn
118
+ ServiceRole : !GetAtt CodeBuildServiceRoleRelease .Arn
68
119
Restrictions :
69
120
MaximumBuildsAllowed : !Ref NumberOfBuildsInBatch
70
121
ComputeTypesAllowed :
@@ -78,22 +129,41 @@ Resources:
78
129
S3Logs :
79
130
Status : DISABLED
80
131
EncryptionDisabled : false
81
- CodeBuildServiceRole :
132
+
133
+ CodeBuildServiceRoleCI :
82
134
Type : " AWS::IAM::Role"
83
135
Properties :
84
136
Path : /service-role/
85
- RoleName : !Sub "codebuild-${ProjectName}-service-role"
137
+ RoleName : !Sub "codebuild-${ProjectName}-service-role-ci "
86
138
AssumeRolePolicyDocument : >-
87
139
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}
88
140
MaxSessionDuration : 3600
89
141
ManagedPolicyArns :
90
142
- !Ref CryptoToolsKMS
91
143
- !Ref CodeBuildBatchPolicy
92
144
- !Ref CodeBuildBasePolicy
93
- - !Ref SecretsManagerPolicy
145
+ - !Ref SecretsManagerPolicyCI
94
146
- !Ref ParameterStorePolicy
95
147
- " arn:aws:iam::aws:policy/AWSCodeArtifactReadOnlyAccess"
96
148
- " arn:aws:iam::aws:policy/AWSCodeArtifactAdminAccess"
149
+
150
+ CodeBuildServiceRoleRelease :
151
+ Type : " AWS::IAM::Role"
152
+ Properties :
153
+ Path : /service-role/
154
+ RoleName : !Sub "codebuild-${ProjectName}-service-role-release"
155
+ AssumeRolePolicyDocument : >-
156
+ {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}
157
+ MaxSessionDuration : 3600
158
+ ManagedPolicyArns :
159
+ - !Ref CryptoToolsKMS
160
+ - !Ref CodeBuildBatchPolicy
161
+ - !Ref CodeBuildBasePolicy
162
+ - !Ref SecretsManagerPolicyRelease
163
+ - !Ref ParameterStorePolicy
164
+ - " arn:aws:iam::aws:policy/AWSCodeArtifactReadOnlyAccess"
165
+ - " arn:aws:iam::aws:policy/AWSCodeArtifactAdminAccess"
166
+
97
167
CodeBuildBatchPolicy :
98
168
Type : " AWS::IAM::ManagedPolicy"
99
169
Properties :
@@ -107,8 +177,8 @@ Resources:
107
177
{
108
178
"Effect": "Allow",
109
179
"Resource": [
110
- "arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/${ProjectName}-test-release ",
111
- "arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/${ProjectName}-prod-release ",
180
+ "arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/${ProjectName}-Release ",
181
+ "arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/${ProjectName}-CI ",
112
182
"arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/${ProjectName}"
113
183
],
114
184
"Action": [
@@ -119,6 +189,7 @@ Resources:
119
189
}
120
190
]
121
191
}
192
+
122
193
CodeBuildBasePolicy :
123
194
Type : " AWS::IAM::ManagedPolicy"
124
195
Properties :
@@ -133,10 +204,10 @@ Resources:
133
204
"Resource": [
134
205
"arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}",
135
206
"arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}:*",
136
- "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-test-release ",
137
- "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-test-release :*",
138
- "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-prod-release ",
139
- "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-prod-release :*"
207
+ "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-CI ",
208
+ "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-CI :*",
209
+ "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-Release ",
210
+ "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${ProjectName}-Release :*"
140
211
],
141
212
"Action": [
142
213
"logs:CreateLogGroup",
@@ -172,18 +243,39 @@ Resources:
172
243
}
173
244
]
174
245
}
246
+
175
247
AccountIdParameter :
176
248
Type : " AWS::SSM::Parameter"
177
249
Properties :
178
250
Description : Parameter to store our account id so CodeBuild specs can access it
179
- Name : /CodeBuild/AccountId
251
+ Name : /CodeBuild/AccountIdentity
180
252
Type : String
181
253
Value : !Sub "${AWS::AccountId}"
182
- SecretsManagerPolicy :
254
+
255
+ SecretsManagerPolicyCI :
183
256
Type : " AWS::IAM::ManagedPolicy"
184
257
Properties :
185
- ManagedPolicyName : !Sub "CryptoTools-SecretsManager-${ProjectName}-release"
186
- Path : /service-role/
258
+ ManagedPolicyName : !Sub "CryptoTools-SecretsManager-${ProjectName}-CI"
259
+ Path : " /service-role/"
260
+ PolicyDocument : !Sub |
261
+ {
262
+ "Version": "2012-10-17",
263
+ "Statement": [
264
+ {
265
+ "Effect": "Allow",
266
+ "Resource": [
267
+ "arn:aws:secretsmanager:us-west-2:${AWS::AccountId}:secret:Maven-GPG-Keys-GC6h0A"
268
+ ],
269
+ "Action": "secretsmanager:GetSecretValue"
270
+ }
271
+ ]
272
+ }
273
+
274
+ SecretsManagerPolicyRelease :
275
+ Type : " AWS::IAM::ManagedPolicy"
276
+ Properties :
277
+ ManagedPolicyName : !Sub "CryptoTools-SecretsManager-${ProjectName}-Release"
278
+ Path : " /service-role/"
187
279
PolicyDocument : !Sub |
188
280
{
189
281
"Version": "2012-10-17",
@@ -192,13 +284,13 @@ Resources:
192
284
"Effect": "Allow",
193
285
"Resource": [
194
286
"arn:aws:secretsmanager:us-west-2:${AWS::AccountId}:secret:Maven-GPG-Keys-GC6h0A",
195
- "arn:aws:secretsmanager:us-west-2:${AWS::AccountId}:secret:Sonatype-Team-Account-0tWvZm",
196
- "arn:aws:secretsmanager:us-west-2:587316601012:secret:Maven-GPG-Keys-Credentials-C0wCzI",
287
+ "arn:aws:secretsmanager:us-west-2:${AWS::AccountId}:secret:Sonatype-Team-Account-0tWvZm"
197
288
],
198
289
"Action": "secretsmanager:GetSecretValue"
199
290
}
200
291
]
201
292
}
293
+
202
294
CryptoToolsKMS :
203
295
Type : " AWS::IAM::ManagedPolicy"
204
296
Properties :
@@ -223,10 +315,11 @@ Resources:
223
315
}
224
316
]
225
317
}
318
+
226
319
ParameterStorePolicy :
227
320
Type : " AWS::IAM::ManagedPolicy"
228
321
Properties :
229
- ManagedPolicyName : !Sub "CryptoTools-ParameterStore-${ProjectName}-release "
322
+ ManagedPolicyName : !Sub "CryptoTools-ParameterStore-${ProjectName}"
230
323
Path : /service-role/
231
324
PolicyDocument : !Sub |
232
325
{
0 commit comments