name: Build and Push Docker Images on: push: branches: [ main ] release: types: [ published ] workflow_dispatch: env: REGISTRY: europe-west4-docker.pkg.dev PROJECT_ID: bridge-misc REPOSITORY: omni-bridge-docker-images jobs: build-and-push: runs-on: warp-ubuntu-latest-x64-2x strategy: matrix: chain: [btc, ltc, zec] permissions: contents: read steps: - name: Checkout repository uses: actions/checkout@v4 - name: Authenticate to Google Cloud id: auth uses: google-github-actions/auth@v2 with: credentials_json: ${{ secrets.GCP_SA_KEY }} - name: Configure Docker to use gcloud as credential helper run: | gcloud auth configure-docker ${{ env.REGISTRY }} --quiet - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/${{ env.REPOSITORY }}/${{ matrix.chain }}-relayer tags: | # For releases, use semver tags type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} # For main branch pushes, use latest and SHA type=raw,value=latest,enable={{is_default_branch}} type=sha,prefix={{branch}},format=short,enable={{is_default_branch}} # For PRs, use PR number type=ref,event=pr - name: Set build args id: build-args run: | case "${{ matrix.chain }}" in btc) echo "features=" >> $GITHUB_OUTPUT ;; ltc) echo "features=" >> $GITHUB_OUTPUT ;; zec) echo "features=zcash" >> $GITHUB_OUTPUT ;; esac - name: Build and push Docker image uses: Warpbuilds/build-push-action@v6 with: context: . file: ./relayer/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | FEATURES=${{ steps.build-args.outputs.features }} profile-name: "bridge-docker-builder" platforms: linux/amd64