5
5
workflow_dispatch :
6
6
7
7
jobs :
8
+ prepare :
9
+ runs-on : ubuntu-latest
10
+ outputs :
11
+ postgres_versions : ${{ steps.set-versions.outputs.postgres_versions }}
12
+ steps :
13
+ - name : Checkout Repo
14
+ uses : actions/checkout@v4
15
+
16
+ - uses : DeterminateSystems/nix-installer-action@main
17
+
18
+ - name : Set PostgreSQL versions
19
+ id : set-versions
20
+ run : |
21
+ VERSIONS=$(nix run nixpkgs#yq -- '.postgres_major[]' ansible/vars.yml | nix run nixpkgs#jq -- -R -s -c 'split("\n")[:-1]')
22
+ echo "postgres_versions=$VERSIONS" >> $GITHUB_OUTPUT
23
+
8
24
test-ami-nix :
25
+ needs : prepare
9
26
strategy :
10
27
fail-fast : false
11
28
matrix :
29
+ postgres_version : ${{ fromJson(needs.prepare.outputs.postgres_versions) }}
12
30
include :
13
31
- runner : arm-runner
14
32
arch : arm64
15
33
ubuntu_release : focal
16
34
ubuntu_version : 20.04
17
35
mcpu : neoverse-n1
18
- runs-on : ${{ matrix.runner }}
36
+ runs-on : ${{ matrix.runner }}
19
37
timeout-minutes : 150
20
38
permissions :
21
39
contents : write
@@ -40,18 +58,29 @@ jobs:
40
58
- name : Generate random string
41
59
id : random
42
60
run : echo "random_string=$(openssl rand -hex 8)" >> $GITHUB_OUTPUT
61
+
62
+ - name : Set PostgreSQL version environment variable
63
+ run : echo "POSTGRES_MAJOR_VERSION=${{ matrix.postgres_version }}" >> $GITHUB_ENV
64
+
65
+ - name : Generate common-nix.vars.pkr.hcl
66
+ run : |
67
+ PG_VERSION=$(sudo nix run nixpkgs#yq -- '.postgres_release["postgres'${{ matrix.postgres_version }}'"]' ansible/vars.yml)
68
+ PG_VERSION=$(echo $PG_VERSION | tr -d '"') # Remove any surrounding quotes
69
+ echo 'postgres-version = "'$PG_VERSION'"' > common-nix.vars.pkr.hcl
70
+ # Ensure there's a newline at the end of the file
71
+ echo "" >> common-nix.vars.pkr.hcl
43
72
44
73
- name : Build AMI stage 1
45
74
run : |
46
75
packer init amazon-arm64-nix.pkr.hcl
47
76
GIT_SHA=${{github.sha}}
48
- packer build -var "git-head-version=${GIT_SHA}" -var "packer-execution-id=${GITHUB_RUN_ID}" -var-file="development-arm.vars.pkr.hcl" -var-file="common-nix.vars.pkr.hcl" -var "ansible_arguments=" -var "postgres-version=${{ steps.random.outputs.random_string }}" -var "region=ap-southeast-1" -var 'ami_regions=["ap-southeast-1"]' -var "force-deregister=true" amazon-arm64-nix.pkr.hcl
77
+ packer build -var "git-head-version=${GIT_SHA}" -var "packer-execution-id=${GITHUB_RUN_ID}" -var-file="development-arm.vars.pkr.hcl" -var-file="common-nix.vars.pkr.hcl" -var "ansible_arguments=" -var "postgres-version=${{ steps.random.outputs.random_string }}" -var "region=ap-southeast-1" -var 'ami_regions=["ap-southeast-1"]' -var "force-deregister=true" -var "ansible_arguments=-e postgresql_major=${POSTGRES_MAJOR_VERSION}" amazon-arm64-nix.pkr.hcl
49
78
50
79
- name : Build AMI stage 2
51
80
run : |
52
81
packer init stage2-nix-psql.pkr.hcl
53
82
GIT_SHA=${{github.sha}}
54
- packer build -var "git-head-version=${GIT_SHA}" -var "packer-execution-id=${GITHUB_RUN_ID}" -var-file="development-arm.vars.pkr.hcl" -var-file="common-nix.vars.pkr.hcl" -var "postgres-version=${{ steps.random.outputs.random_string }}" -var "region=ap-southeast-1" -var 'ami_regions=["ap-southeast-1"]' -var "force-deregister=true" -var "git_sha=${GITHUB_SHA}" stage2-nix-psql.pkr.hcl
83
+ packer build -var "git-head-version=${GIT_SHA}" -var "packer-execution-id=${GITHUB_RUN_ID}" -var "postgres_major_version=${POSTGRES_MAJOR_VERSION}" -var -file="development-arm.vars.pkr.hcl" -var-file="common-nix.vars.pkr.hcl" -var "postgres-version=${{ steps.random.outputs.random_string }}" -var "region=ap-southeast-1" -var 'ami_regions=["ap-southeast-1"]' -var "force-deregister=true" -var "git_sha=${GITHUB_SHA}" stage2-nix-psql.pkr.hcl
55
84
56
85
- name : Run tests
57
86
timeout-minutes : 10
0 commit comments