name: Release on: push: tags: - 'v*' jobs: create-release: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 - name: Create draft release with auto-generated notes run: gh release create ${{ github.ref_name }} --draft --generate-notes --prerelease=${{ contains(github.ref_name, 'rc') }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} release: needs: create-release strategy: fail-fast: false matrix: include: - os: macos-latest platform: mac - os: windows-latest platform: win - os: ubuntu-latest platform: linux runs-on: ${{ matrix.os }} permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: latest run_install: false - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build and release (macOS) if: matrix.platform == 'mac' run: pnpm build:mac --publish always env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_LINK: ${{ secrets.MAC_CERTS }} CSC_KEY_PASSWORD: ${{ secrets.MAC_CERTS_PASSWORD }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - name: Build and release (Windows) if: matrix.platform == 'win' run: pnpm build:win --publish always env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build and release (Linux) if: matrix.platform == 'linux' run: pnpm build:linux --publish always env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} publish-release: needs: release runs-on: ubuntu-latest permissions: contents: write steps: - name: Publish release run: gh release edit ${{ github.ref_name }} --draft=false --repo ${{ github.repository }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}