name: publish

on:
  push:
    branches:
      - 'develop'
      - 'main'

concurrency:
  group: mizu-publish-${{ github.ref }}
  cancel-in-progress: true

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up Cloud SDK
        uses: google-github-actions/setup-gcloud@master
        with:
          service_account_key: ${{ secrets.GCR_JSON_KEY }}
          export_default_credentials: true
      - uses: haya14busa/action-cond@v1
        id: condval
        with:
          cond: ${{ github.ref == 'refs/heads/main' }}
          if_true: "minor"
          if_false: "patch"
      - name: Auto Increment Semver Action
        uses: MCKanpolat/auto-semver-action@1.0.5
        id: versioning
        with:
          releaseType: ${{ steps.condval.outputs.value }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
      - name: Get version parameters
        shell: bash
        run: |
          echo "##[set-output name=build_timestamp;]$(echo $(date +%s))"
          echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
        id: version_parameters
      - name: Get base image name
        shell: bash
        run: echo "##[set-output name=image;]$(echo gcr.io/up9-docker-hub/mizu/${GITHUB_REF#refs/heads/})"
        id: base_image_step
      - name: Docker meta
        id: meta
        uses: crazy-max/ghaction-docker-meta@v2
        with:
          images: ${{ steps.base_image_step.outputs.image }}
          tags: |
            type=sha
            type=raw,${{ github.sha }}
            type=raw,${{ steps.versioning.outputs.version }}
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          registry: gcr.io
          username: _json_key
          password: ${{ secrets.GCR_JSON_KEY }}
      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            SEM_VER=${{ steps.versioning.outputs.version }}
            BUILD_TIMESTAMP=${{ steps.version_parameters.outputs.build_timestamp }}
            GIT_BRANCH=${{ steps.version_parameters.outputs.branch }}
            COMMIT_HASH=${{ github.sha }}
      - name: Build and Push CLI
        run: make push-cli SEM_VER='${{ steps.versioning.outputs.version }}' BUILD_TIMESTAMP='${{ steps.version_parameters.outputs.build_timestamp }}'
      - shell: bash
        run: |
          echo '${{ steps.versioning.outputs.version }}' >> cli/bin/version.txt
      - name: publish
        uses: ncipollo/release-action@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          artifacts: "cli/bin/*"
          commit: ${{ steps.version_parameters.outputs.branch }}
          tag: ${{ steps.versioning.outputs.version }}
          prerelease: ${{ github.ref != 'refs/heads/main' }}
          bodyFile: 'cli/bin/README.md'
