name: Publish Docker image
on:
  workflow_dispatch:
  release:
    types: [published]
jobs:
  push_to_registry:
    name: Push Docker image to GitHub Packages
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v2
      -
        name: Prepare tags
        id: prepare_tags
        run: |
          REPOSITORY=ghcr.io
          DOCKER_IMAGE=tchapi/davis
          VERSION=edge
          if [[ $GITHUB_REF == refs/tags/* ]]; then
            VERSION=${GITHUB_REF#refs/tags/}
          fi
          TAGS="${REPOSITORY}/${DOCKER_IMAGE}:${VERSION}"
          if [ "${{ github.event_name }}" = "push" ]; then
            TAGS="$TAGS,${REPOSITORY}/${DOCKER_IMAGE}:sha-${GITHUB_SHA::8}"
          fi
          echo ::set-output name=version::${VERSION}
          echo ::set-output name=tags::${TAGS}
          echo ::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
      -
        name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}
      -
        name: Build and Push to GitHub Packages
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          file: docker/Dockerfile
          pull: true
          push: true
          tags: ${{ steps.prepare_tags.outputs.tags }}
          labels: |
            org.opencontainers.image.source=${{ github.event.repository.html_url }}
            org.opencontainers.image.created=${{ steps.prepare_tags.outputs.created }}
            org.opencontainers.image.revision=${{ github.sha }}
