name: Build on: push: branches: - main tags: - 'v*' pull_request: workflow_dispatch: jobs: build: strategy: fail-fast: false matrix: os: [windows-latest, macos-latest, ubuntu-latest] include: - os: windows-latest build-script: build:win - os: macos-latest build-script: build:mac - os: ubuntu-latest build-script: build:linux runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v5 - name: Setup pnpm uses: pnpm/action-setup@v5 - name: Setup Node.js uses: actions/setup-node@v5 with: node-version: 22 cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build run: pnpm ${{ matrix.build-script }} - name: Set artifact version id: version shell: bash run: | if [[ "${GITHUB_REF}" == refs/tags/* ]]; then echo "value=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT" else echo "value=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" fi - name: Upload artifacts uses: actions/upload-artifact@v5 with: name: ${{ matrix.os }}-${{ steps.version.outputs.value }} path: | dist/*.exe dist/*.dmg dist/*.AppImage dist/*.deb if-no-files-found: error