Skip to content

Commit 3ad73aa

Browse files
authored
feat: OIDC support for build and push docker image workflow (#186)
* feat: OIDC support for build and push docker image workflow * fix: remove duplicates
1 parent 2cd1d7f commit 3ad73aa

File tree

1 file changed

+41
-7
lines changed

1 file changed

+41
-7
lines changed

.github/workflows/build_docker_image_and_push_to_ecr.yaml

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,26 @@ name: build docker image and push it to ECR
33
on:
44
workflow_call:
55
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
626
imageTag:
727
description: Tag given to container image
828
required: true
@@ -20,11 +40,6 @@ on:
2040
required: false
2141
type: string
2242
default: ./deploy/Dockerfile
23-
awsRegion:
24-
description: AWS region
25-
required: false
26-
type: string
27-
default: us-east-1
2843
slackChannelId:
2944
description: Slack Channel ID
3045
required: false
@@ -63,10 +78,10 @@ on:
6378
secrets:
6479
awsAccessKeyId:
6580
description: AWS access key ID
66-
required: true
81+
required: false
6782
awsSecretAccessKey:
6883
description: AWS secret access key
69-
required: true
84+
required: false
7085
slackToken:
7186
description: Slack API token
7287
required: false
@@ -154,7 +169,26 @@ jobs:
154169
- name: setup Docker Buildx
155170
uses: docker/setup-buildx-action@v3
156171

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+
157190
- name: login to AWS ECR
191+
if: inputs.useOIDC == false
158192
uses: docker/login-action@v3
159193
with:
160194
registry: ${{ inputs.registry }}

0 commit comments

Comments
 (0)