name: Release Recurring
# This workflow bakes executables of the major platforms for Testing purposes
on:
  merge_group:
  workflow_dispatch:
  push:
    branches:
      - develop
  pull_request:
    types:
      - opened
      - synchronize
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
env:
  PR_NUMBER: ${{ github.event.number }}
jobs:
  build-and-upload-artifacts:
    # Skip jobs for release PRs
    if: ${{ !startsWith(github.head_ref, 'release/') }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: "macos-latest"
            build-targets: "zip"
          - os: "windows-latest"
            build-targets: "portable"
          - os: "ubuntu-latest"
            build-targets: "tar.gz"
    steps:
      - name: Checkout branch
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version-file: ".nvmrc"
          cache: 'npm'
          cache-dependency-path: package-lock.json

      - name: Install packages
        run: npm ci

      - name: Bump version
        shell: bash
        run: npm --workspaces version prerelease --preid="$(git rev-parse --short HEAD)${{ github.event_name == 'pull_request' && '.pr-$PR_NUMBER' || '' }}" --no-git-tag-version

      - name: Package
        shell: bash
        run: NODE_OPTIONS='--max_old_space_size=6144' BUILD_TARGETS='${{ matrix.build-targets }}' npm run app-package

      - name: Test critical path on packaged electron app
        run: npm run test:package -w packages/insomnia-smoke-test -- --project=Critical

      - name: Upload smoke test traces
        uses: actions/upload-artifact@v3
        with:
          if-no-files-found: ignore
          name: ${{ matrix.os }}-package-critical-test-traces-${{ github.run_number }}
          path: packages/insomnia-smoke-test/traces

      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          if-no-files-found: ignore
          name: ${{ matrix.os }}-artifacts-${{ github.run_number }}
          path: |
            packages/insomnia/dist/*.exe
            packages/insomnia/dist/*.tar.gz
            packages/insomnia/dist/*.zip
