-
Notifications
You must be signed in to change notification settings - Fork 8
79 lines (65 loc) · 2.6 KB
/
review_apps_on_pr_change.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
name: "Review apps: on PR change"
on:
pull_request: {}
env:
IMAGE_TAG: "842676007477.dkr.ecr.eu-west-2.amazonaws.com/forms-admin:pr-${{github.event.pull_request.number}}-${{github.event.pull_request.head.ref}}"
jobs:
# Build the container in a separate step that does not run on CodeBuild in order
# to take advantage of GitHub Actions' image caches
build-pr-container:
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Build container
run: |
docker buildx build \
--output "type=tar,dest=${{runner.temp}}/forms-admin-image.tar" \
--tag "${{env.IMAGE_TAG}}" \
.
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: forms-admin-image
path: "${{runner.temp}}/forms-admin-image.tar"
update-review-app:
# this references a codebuild project configured in forms-deploy
# see: https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html
runs-on: codebuild-review-forms-admin-gha-runner-${{github.run_id}}-${{github.run_attempt}}
needs: [build-pr-container]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Fetch artifact
uses: actions/download-artifact@v4
with:
name: forms-admin-image
path: "${{runner.temp}}"
- name: Load image
run: |
ls -la "${{runner.temp}}"
docker import "${{runner.temp}}/forms-admin-image.tar" "${{env.IMAGE_TAG}}"
- name: Push container
id: build-container
run: |
aws ecr get-login-password --region eu-west-2 \
| docker login --username AWS --password-stdin 842676007477.dkr.ecr.eu-west-2.amazonaws.com
echo "Pushing container image"
echo "${{env.IMAGE_TAG}}"
docker push "${IMAGE_TAG}"
- name: Determine Terraform version
id: terraform-version
run: |
cat .review_apps/.terraform-version | xargs printf "TF_VERSION=%s" >> "$GITHUB_OUTPUT"
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: ${{steps.terraform-version.outputs.TF_VERSION}}
- name: Deploy review app
run: |
cd .review_apps/
terraform init -backend-config="key=review-apps/forms-admin/pr-${{github.event.pull_request.number}}.tfstate"
terraform apply \
-var "pull_request_number=${{github.event.pull_request.number}}" \
-var "forms_admin_container_image=${{env.IMAGE_TAG}}" \
-no-color \
-auto-approve