@@ -3,6 +3,26 @@ name: build docker image and push it to ECR
3
3
on :
4
4
workflow_call :
5
5
inputs :
6
+ useOIDC :
7
+ description : Whether to use OIDC for assume role
8
+ required : false
9
+ type : boolean
10
+ default : false
11
+ githubOIDCRoleArn :
12
+ description : Github OIDC role ARN
13
+ required : false
14
+ type : string
15
+ default : " "
16
+ awsRegion :
17
+ description : AWS region
18
+ required : false
19
+ type : string
20
+ default : us-east-1
21
+ awsSessionDuration :
22
+ description : AWS session duration
23
+ required : false
24
+ type : number
25
+ default : 3600
6
26
imageTag :
7
27
description : Tag given to container image
8
28
required : true
20
40
required : false
21
41
type : string
22
42
default : ./deploy/Dockerfile
23
- awsRegion :
24
- description : AWS region
25
- required : false
26
- type : string
27
- default : us-east-1
28
43
slackChannelId :
29
44
description : Slack Channel ID
30
45
required : false
63
78
secrets :
64
79
awsAccessKeyId :
65
80
description : AWS access key ID
66
- required : true
81
+ required : false
67
82
awsSecretAccessKey :
68
83
description : AWS secret access key
69
- required : true
84
+ required : false
70
85
slackToken :
71
86
description : Slack API token
72
87
required : false
@@ -154,7 +169,26 @@ jobs:
154
169
- name : setup Docker Buildx
155
170
uses : docker/setup-buildx-action@v3
156
171
172
+ # Assume OIDC Role, the trust relationship between GitHub and AWS is defined in IAM in the organization account.
173
+ - name : assume OIDC Role
174
+ if : inputs.useOIDC == true
175
+ uses : aws-actions/configure-aws-credentials@v4
176
+ with :
177
+ aws-region : ${{ inputs.awsRegion }}
178
+ role-to-assume : ${{ inputs.githubOIDCRoleArn }}
179
+ role-duration-seconds : ${{ inputs.awsSessionDuration }}
180
+
181
+ # This parameter is needed otherwise this action is trying to tag session
182
+ # which does not work for cross-account assume
183
+ role-skip-session-tagging : true
184
+
185
+ - name : login to AWS ECR using OIDC
186
+ if : inputs.useOIDC == true
187
+ id : login-ecr
188
+ uses : aws-actions/amazon-ecr-login@v2
189
+
157
190
- name : login to AWS ECR
191
+ if : inputs.useOIDC == false
158
192
uses : docker/login-action@v3
159
193
with :
160
194
registry : ${{ inputs.registry }}
0 commit comments