name: release

on:
  push:
    tags:
      - "v*"

env:
  GO_VERSION: "1.20"
  CGO_ENABLED: 0
  DOCKER_REPOSITORY: sosedoff/pgweb
  GHCR_REPOSITORY: sosedoff/pgweb

jobs:
  docker-release:
    name: Publish Docker images
    runs-on: ubuntu-latest
    timeout-minutes: 30

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

      - name: Configure docker build context
        uses: docker/setup-buildx-action@v2

      - name: Set reference tags
        id: refs
        run: |
          echo ::set-output name=SOURCE_NAME::${GITHUB_REF#refs/*/}
          echo ::set-output name=SOURCE_BRANCH::${GITHUB_REF#refs/heads/}
          echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/v}

      - name: Login to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Login to Github Container Registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GH_TOKEN }}

      - name: Build and push docker images
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: |
            ${{ env.DOCKER_REPOSITORY }}:${{ steps.refs.outputs.SOURCE_TAG }}
            ${{ env.DOCKER_REPOSITORY }}:latest
            ghcr.io/${{ env.GHCR_REPOSITORY }}:${{ steps.refs.outputs.SOURCE_TAG }}
            ghcr.io/${{ env.GHCR_REPOSITORY }}:latest
          platforms: linux/amd64,linux/arm64,linux/arm/v5,linux/arm/v7
