86 lines
2.6 KiB
YAML
86 lines
2.6 KiB
YAML
name: Publish pg_prove
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
settings:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
image_tag: supabase/pg_prove:${{ steps.version.outputs.pg_prove }}
|
|
steps:
|
|
- uses: docker/setup-buildx-action@v3
|
|
- uses: docker/build-push-action@v6
|
|
with:
|
|
load: true
|
|
context: https://github.com/horrendo/pg_prove.git
|
|
target: builder
|
|
tags: supabase/pg_prove:builder
|
|
- id: version
|
|
# Replace space with equal to get the raw version string, ie. pg_prove=3.36
|
|
run: |
|
|
docker run --rm -a STDOUT supabase/pg_prove:builder pg_prove --version \
|
|
| tr ' ' '=' \
|
|
>> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
build_image:
|
|
needs:
|
|
- settings
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- runner: [self-hosted, X64]
|
|
arch: amd64
|
|
- runner: arm-runner
|
|
arch: arm64
|
|
runs-on: ${{ matrix.runner }}
|
|
timeout-minutes: 180
|
|
outputs:
|
|
image_digest: ${{ steps.build.outputs.digest }}
|
|
steps:
|
|
- run: docker context create builders
|
|
- uses: docker/setup-buildx-action@v3
|
|
with:
|
|
endpoint: builders
|
|
- uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
- id: build
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
push: true
|
|
context: https://github.com/horrendo/pg_prove.git
|
|
tags: ${{ needs.settings.outputs.image_tag }}_${{ matrix.arch }}
|
|
platforms: linux/${{ matrix.arch }}
|
|
cache-from: type=gha,scope=${{ github.ref_name }}-pg_prove-${{ matrix.arch }}
|
|
cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-pg_prove-${{ matrix.arch }}
|
|
|
|
merge_manifest:
|
|
needs:
|
|
- settings
|
|
- build_image
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: docker/setup-buildx-action@v3
|
|
- uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
- name: Merge multi-arch manifests
|
|
run: |
|
|
docker buildx imagetools create -t ${{ needs.settings.outputs.image_tag }} \
|
|
${{ needs.settings.outputs.image_tag }}_amd64 \
|
|
${{ needs.settings.outputs.image_tag }}_arm64
|
|
|
|
publish:
|
|
needs:
|
|
- settings
|
|
- merge_manifest
|
|
# Call workflow explicitly because events from actions cannot trigger more actions
|
|
uses: ./.github/workflows/mirror-image.yml
|
|
with:
|
|
image: ${{ needs.settings.outputs.image_tag }}
|
|
secrets: inherit
|