name: Publish Docker Image

# NOTE: For this action to work, you must enable write permissions in your github repository settings.
# Settings -> Actions -> General. "Workflow Permissions". Select "Read and write permissions".
# If you forget to enable, the action will fail on push with a 401 error. Just re-run the failed action after enabling.

on:
  push:
    tags:
      - "v[0-9]+.[0-9]+.[0-9]+" # ignore rc

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

env:
  GO_VERSION: 1.22
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

permissions:
  contents: read
  packages: write

jobs:
  release-image:
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v4

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

      # all lowercase ghcr registry
      - run: |
          DOCKER_REGISTRY=`echo "${{ env.REGISTRY }}/${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]'`
          echo "DOCKER_REGISTRY=$DOCKER_REGISTRY" >> $GITHUB_ENV

          REPO_NAME=`echo "${{ github.repository }}" | awk -F'/' '{print $2}' | tr '[:upper:]' '[:lower:]'`
          echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV

      - name: Parse tag
        id: tag
        run: |
          # v0.0.1
          VERSION=$(echo ${{ github.ref_name }} | sed "s/v//")
          # 0.0.1
          echo "VERSION=$VERSION" >> $GITHUB_ENV

      # build and publish package to ghcr (public) with codebase remaining private
      - name: Log in to the Container registry
        uses: docker/login-action@v2
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}

      # make sure to update package to be public in repo ghcr settings
      - name: Build and push Docker image
        uses: strangelove-ventures/heighliner-build-action@v1.0.0
        with:
          # v0.0.1
          git-ref: ${{ github.ref_name }}
          chain: ${{ env.REPO_NAME}}
          dockerfile: cosmos
          registry: ${{ env.DOCKER_REGISTRY }}
          build-target: |
            cd ..
            make install
          local: true
          binaries: |
            - /go/bin/sonrd
          build-env: |
            - BUILD_TAGS=muslc
