name: Build Dragon Wind Desktop on: push: branches: [main] tags: - 'v*' workflow_dispatch: jobs: # ── Windows .exe ───────────────────────────────────────────────────────── build-windows: name: Windows (.exe) runs-on: windows-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node.js 20 uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm install - name: Build Windows installer run: npm run build:win env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_IDENTITY_AUTO_DISCOVERY: false - name: Upload .exe artifact uses: actions/upload-artifact@v4 with: name: dragon-wind-windows path: dist/*.exe retention-days: 30 # ── macOS .dmg ──────────────────────────────────────────────────────────── build-mac: name: macOS (.dmg) runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node.js 20 uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm install - name: Build macOS DMG run: npm run build:mac env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_IDENTITY_AUTO_DISCOVERY: false - name: Upload .dmg artifact uses: actions/upload-artifact@v4 with: name: dragon-wind-mac path: dist/*.dmg retention-days: 30 # ── Release (on tag push only) ──────────────────────────────────────────── release: name: Create Release needs: [build-windows, build-mac] runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') permissions: contents: write steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts/ - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: files: artifacts/**/* generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}