name: Publish Queue Manager to Production

on:
  workflow_call:
    secrets:
      GH_PACKAGES:
        required: true
  workflow_dispatch:

jobs:
  build_queuemanager:
    if: "!contains(github.event.head_commit.message, 'ci skip')"
    runs-on: ubuntu-latest
    timeout-minutes: 80
    permissions:
      contents: read
      packages: write 
      deployments: write
    steps:
      - uses: actions/checkout@v2
      - name: Setup kernel for react native, increase watchers
        run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

      - name: Build & Tag Docker image
        env:
          REGISTERY_OWNER: implerhq
          DOCKER_NAME: impler/queue-manager
          IMAGE_TAG: ${{ github.event.pull_request.head.sha || github.sha }}
        run: |
          docker build -t ghcr.io/$REGISTERY_OWNER/$DOCKER_NAME:$IMAGE_TAG -f apps/queue-manager/Dockerfile .
          docker tag ghcr.io/$REGISTERY_OWNER/$DOCKER_NAME:$IMAGE_TAG ghcr.io/$REGISTERY_OWNER/$DOCKER_NAME:latest
      
      - name: Log in to GitHub Container Registry
        env:
          GH_ACTOR: implerhq
          GH_PASSWORD: ${{ secrets.GH_PACKAGES }}
        run: echo $GH_PASSWORD | docker login ghcr.io -u $GH_ACTOR --password-stdin
      
      - name: Push Docker image
        env:
          REGISTERY_OWNER: implerhq
          DOCKER_NAME: impler/queue-manager
          IMAGE_TAG: ${{ github.event.pull_request.head.sha || github.sha }}
        run: |
          docker push ghcr.io/$REGISTERY_OWNER/$DOCKER_NAME:$IMAGE_TAG
          docker push ghcr.io/$REGISTERY_OWNER/$DOCKER_NAME:latest
          echo "::set-output name=IMAGE::ghcr.io/$REGISTERY_OWNER/$DOCKER_NAME:$IMAGE_TAG"
