feat: use GH Actions and separate Dockerfiles #15
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
push: {} | |
release: | |
types: [published] | |
workflow_dispatch: {} | |
permissions: | |
packages: write | |
contents: write | |
pull-requests: write | |
id-token: write | |
env: | |
FOLDER: ./cmd | |
# doesn't have an ECR by that name; EXCLUDE is regex and is '|' separated (e.g: a|b|c) | |
EXCLUDE: s3-notify | |
jobs: | |
prepare: | |
runs-on: ubuntu-latest | |
outputs: | |
git-rev: ${{ steps.git-rev.outputs.git-rev }} | |
matrix: ${{ steps.set.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- uses: GeoNet/yq@bbe305500687a5fe8498d74883c17f0f06431ac4 # master | |
- id: git-rev | |
env: | |
GIT_SHA: ${{ github.sha }} | |
run: | | |
echo "git-rev=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
- id: set | |
run: | | |
echo "matrix=$(find $FOLDER -mindepth 1 -maxdepth 1 -type d | grep -Ewv "$EXCLUDE" - | xargs -n 1 basename | xargs | yq 'split(" ")|.[]|{"target":.,"folder":env(FOLDER)+"/"+.}' -ojson | jq -rcM -s '{"include":.}')" >> $GITHUB_OUTPUT | |
- name: check output | |
run: | | |
jq . <<< '${{ steps.set.outputs.matrix }}' | |
build: | |
needs: prepare | |
strategy: | |
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }} | |
uses: GeoNet/Actions/.github/workflows/reusable-docker-build.yml@main | |
with: | |
context: . | |
dockerfile: ${{ fromJSON(toJSON(matrix)).folder }}/Dockerfile | |
imageName: ${{ fromJSON(toJSON(matrix)).target }} | |
platforms: linux/amd64 | |
push: ${{ github.ref == 'refs/heads/main' }} | |
tags: latest,git-${{ needs.prepare.outputs.git-rev }} | |
registryOverride: 862640294325.dkr.ecr.ap-southeast-2.amazonaws.com | |
aws-region: ap-southeast-2 | |
aws-role-arn-to-assume: arn:aws:iam::862640294325:role/github-actions-geonet-ecr-push | |
aws-role-duration-seconds: "3600" | |
go-apps: | |
uses: GeoNet/Actions/.github/workflows/reusable-go-apps.yml@main | |
with: | |
testSetup: | | |
sudo apt-get -yq update | |
sudo apt-get install -y xsltproc | |
docker \ | |
run -d \ | |
-p 5432:5432 \ | |
-e POSTGRES_PASSWORD=test \ | |
-e POSTGRES_USER=fdsn_w \ | |
-e POSTGRES_DB=fdsn \ | |
--name postgres \ | |
docker.io/postgis/postgis:15-3.3-alpine | |
echo "Waiting until Postgres is ready..." | |
until nc -zv -w 1 127.0.0.1 5432; do | |
sleep 1s | |
done | |
sleep 5s | |
docker logs postgres | |
echo "Postgres is ready" | |
psql postgresql://fdsn_w:[email protected]/fdsn --file=./etc/ddl/drop-create.ddl |