name: Build and Push Docker Image

on:
  release:
    types: [created]
  workflow_dispatch:
    inputs:
      tag:
        description: 'Tag Name'
        required: true

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

    - name: Login to Docker Hub
      uses: docker/login-action@v1
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_PASSWORD }}

    - name: Set tag name
      id: tag_name
      run: |
        if [ "${{ github.event_name }}" = "release" ]; then
          echo "::set-output name=tag::${GITHUB_REF#refs/tags/}"
        elif [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
          echo "::set-output name=tag::${{ github.event.inputs.tag }}"
        fi

    - name: Build and push Docker image with Release tag
      uses: docker/build-push-action@v2
      with:
        context: .
        file: ./Dockerfile
        push: true
        tags: |
          vinlic/glm-free-api:${{ steps.tag_name.outputs.tag }}
          vinlic/glm-free-api:latest
        platforms: linux/amd64,linux/arm64
        build-args: TARGETPLATFORM=${{ matrix.platform }}
