name: Build on: push: branches: ["main"] jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: "npm" - name: Install dependencies run: npm ci - name: Build run: npm run make - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: build-${{ matrix.os }} path: out/make/**/* if-no-files-found: error release: needs: build runs-on: ubuntu-latest # Only release on pushes, not PRs if: github.event_name == 'push' permissions: contents: write steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts merge-multiple: true - name: Create pre-release uses: softprops/action-gh-release@v2 with: tag_name: pre-${{ github.sha }} name: "Pre-release ${{ github.ref_name }}@${{ github.sha }}" prerelease: true files: artifacts/**/*