name: Build

on:
  push:
    branches:
      - release
      - beta

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

jobs:
  platform_matrix:
    strategy:
      matrix:
        build:
          - os: ubuntu-latest
            task: linux
          - os: windows-latest
            task: win
          - os: macos-latest
            task: mac
    runs-on: ${{ matrix.build.os }}
    steps:
      - if: matrix.build.os == 'ubuntu-latest'
        run: sudo snap install snapcraft --classic
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm install -g yarn
      - run: yarn
      - id: create_token # get ReleaseBot access token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.RELEASE_BOT_APP_ID }}
          private_key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
      - run: npx semantic-release --ci
        name: Semantic Release
        env:
          GH_TOKEN: ${{ steps.create_token.outputs.token }}
      - run: yarn build
      - run: yarn prepare-release
      - run: yarn package ${{ matrix.build.task }}
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
