1
+ name : Build & Push RimWorld Hay Calc
2
+ on :
3
+ # Build on every merge to main *and* on version tags like v1.2.3
4
+ push :
5
+ branches : [ main ]
6
+ tags : [ 'v*' ]
7
+ paths :
8
+ - ' frontend/**'
9
+ - ' Dockerfile'
10
+ - ' .github/workflows/build-and-deploy.yml'
11
+
12
+ env :
13
+ AWS_REGION : us-east-1
14
+ ECR_REPOSITORY : rimworld-hay-calc
15
+ # This can be set in repo → Settings → Environments → prod → vars
16
+ ECR_REGISTRY : ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com
17
+
18
+ jobs :
19
+ build :
20
+ runs-on : ubuntu-latest
21
+ permissions :
22
+ id-token : write # ✅ OIDC
23
+ contents : read
24
+
25
+ steps :
26
+ - name : 🛎️ Check out code
27
+ uses : actions/checkout@v4
28
+
29
+ # ---------- ① Configure AWS creds via OIDC ----------
30
+ - name : 🔐 Configure AWS credentials
31
+ uses : aws-actions/configure-aws-credentials@v4
32
+ with :
33
+ role-to-assume : arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/GitHubOIDCDeploy
34
+ aws-region : ${{ env.AWS_REGION }}
35
+
36
+ # ---------- ② Log in to ECR ----------
37
+ - name : 🔑 Login to Amazon ECR
38
+ uses : aws-actions/amazon-ecr-login@v2
39
+
40
+ # ---------- ③ Set image tag ----------
41
+ - name : 🏷️ Define image tag
42
+ id : meta
43
+ run : |
44
+ if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
45
+ echo "IMAGE_TAG=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
46
+ else
47
+ echo "IMAGE_TAG=sha-${GITHUB_SHA::7}" >> $GITHUB_OUTPUT
48
+ fi
49
+ - name : 💬 Show tag
50
+ run : echo "Pushing tag ${{ steps.meta.outputs.IMAGE_TAG }}"
51
+
52
+ # ---------- ④ Build & push (uses Docker layer cache) ----------
53
+ - name : 🐳 Build & push image
54
+ uses : docker/build-push-action@v5
55
+ with :
56
+ context : .
57
+ file : ./Dockerfile # still at repo root
58
+ push : true
59
+ tags : |
60
+ ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ steps.meta.outputs.IMAGE_TAG }}
61
+ ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:latest
62
+ cache-from : type=registry,ref=${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:buildcache
63
+ cache-to : type=registry,ref=${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:buildcache,mode=max
0 commit comments