|
2 | 2 |
|
3 | 3 | ## Prerequisites
|
4 | 4 |
|
| 5 | +- Docker |
| 6 | +- Packer |
| 7 | +- yq |
| 8 | +- Python deps: |
| 9 | + |
5 | 10 | ```sh
|
6 |
| -pip3 install docker pytest pytest-testinfra requests |
| 11 | +pip3 install boto3 boto3-stubs[essential] docker ec2instanceconnectcli pytest pytest-testinfra[paramiko,docker] requests |
7 | 12 | ```
|
8 | 13 |
|
9 | 14 | ## Running locally
|
10 | 15 |
|
11 | 16 | ```sh
|
| 17 | +set -euo pipefail |
12 | 18 | # cwd: repo root
|
13 | 19 | # docker must be running
|
14 |
| -pytest -vv testinfra/*.py |
| 20 | + |
| 21 | +# build extensions & pg binaries |
| 22 | +docker buildx build \ |
| 23 | + $(yq 'to_entries | map(select(.value|type == "!!str")) | map(" --build-arg " + .key + "=" + .value) | join("")' 'ansible/vars.yml') \ |
| 24 | + --target=extensions \ |
| 25 | + --tag=supabase/postgres:extensions \ |
| 26 | + --platform=linux/arm64 \ |
| 27 | + --load \ |
| 28 | + . |
| 29 | +mkdir -p /tmp/extensions ansible/files/extensions |
| 30 | +docker save supabase/postgres:extensions | tar xv -C /tmp/extensions |
| 31 | +for layer in /tmp/extensions/*/layer.tar; do |
| 32 | + tar xvf "$layer" -C ansible/files/extensions --strip-components 1 |
| 33 | +done |
| 34 | +docker buildx build \ |
| 35 | + --build-arg ubuntu_release=focal \ |
| 36 | + --build-arg ubuntu_release_no=20.04 \ |
| 37 | + --build-arg postgresql_major=15 \ |
| 38 | + --build-arg postgresql_release=15.1 \ |
| 39 | + --build-arg CPPFLAGS=-mcpu=neoverse-n1 \ |
| 40 | + --file=docker/Dockerfile \ |
| 41 | + --target=pg-deb \ |
| 42 | + --tag=supabase/postgres:deb \ |
| 43 | + --platform=linux/arm64 \ |
| 44 | + --load \ |
| 45 | + . |
| 46 | +mkdir -p /tmp/build ansible/files/postgres |
| 47 | +docker save supabase/postgres:deb | tar xv -C /tmp/build |
| 48 | +for layer in /tmp/build/*/layer.tar; do |
| 49 | + tar xvf "$layer" -C ansible/files/postgres --strip-components 1 |
| 50 | +done |
| 51 | + |
| 52 | +# build AMI |
| 53 | +AWS_PROFILE=supabase-dev packer build \ |
| 54 | + -var-file=development-arm.vars.pkr.hcl \ |
| 55 | + -var-file=common.vars.pkr.hcl \ |
| 56 | + -var "ansible_arguments=" \ |
| 57 | + -var "postgres-version=ci-ami-test" \ |
| 58 | + -var "region=ap-southeast-1" \ |
| 59 | + -var 'ami_regions=["ap-southeast-1"]' \ |
| 60 | + -var "force-deregister=true" \ |
| 61 | + amazon-arm64.pkr.hcl |
| 62 | + |
| 63 | +# run tests |
| 64 | +AWS_PROFILE=supabase-dev pytest -vv -s testinfra/test_*.py |
15 | 65 | ```
|
0 commit comments