name: Jellyseer Release

on: workflow_dispatch

jobs:
  semantic-release:
    name: Tag and release latest version
    runs-on: self-hosted
    env:
      HUSKY: 0
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Log in to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_TOKEN }}
      - name: Install Yarn
        run: npm install -g yarn
      - name: Install dependencies
        run: yarn
      - name: Release
        env:
          GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
        run: npx semantic-release

  discord:
    name: Send Discord Notification
    needs: semantic-release
    if: always()
    runs-on: self-hosted
    steps:
      - name: Get Build Job Status
        uses: technote-space/workflow-conclusion-action@v2
      - name: Combine Job Status
        id: status
        run: |
          failures=(neutral, skipped, timed_out, action_required)
          if [[ ${array[@]} =~ $WORKFLOW_CONCLUSION ]]; then
            echo ::set-output name=status::failure
          else
            echo ::set-output name=status::$WORKFLOW_CONCLUSION
          fi
      - name: Post Status to Discord
        uses: sarisia/actions-status-discord@v1
        with:
          webhook: ${{ secrets.DISCORD_WEBHOOK }}
          status: ${{ steps.status.outputs.status }}
          title: ${{ github.workflow }}
          nofail: true
