update workflow #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/Release | |
| on: | |
| push: | |
| branches: | |
| - '**' | |
| tags: | |
| - 'v*' | |
| permissions: | |
| contents: write | |
| env: | |
| NODE_VERSION: '20' | |
| jobs: | |
| # ─── CI (runs on every push) ───────────────────────────── | |
| ci: | |
| name: Build & Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build CLI | |
| run: npm run build | |
| - name: Typecheck | |
| run: npm run typecheck | |
| # ─── CLI Release (v* tags only) ────────────────────────── | |
| release-cli: | |
| name: Release CLI | |
| needs: ci | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build CLI | |
| run: npm run build | |
| - name: Package tarball | |
| run: npm pack | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: '*.tgz' | |
| generate_release_notes: true | |
| # ─── Desktop Release ─────────────────────────────────── | |
| release-desktop: | |
| name: Desktop (${{ matrix.os }}) | |
| needs: ci | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| build-flag: --win | |
| - os: macos-latest | |
| build-flag: --mac | |
| - os: ubuntu-latest | |
| build-flag: --linux | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| # 1. Build CLI first (desktop app bundles it via extraResources) | |
| - name: Install CLI dependencies | |
| run: npm ci | |
| - name: Build CLI | |
| run: npm run build | |
| # 2. Build Desktop app | |
| - name: Install Desktop dependencies | |
| working-directory: desktop-app | |
| run: npm ci | |
| - name: Build Desktop (electron-vite) | |
| working-directory: desktop-app | |
| env: | |
| CONVEX_URL: ${{ secrets.CONVEX_URL }} | |
| run: npm run build | |
| # 3. Package with electron-builder | |
| - name: Package Desktop | |
| working-directory: desktop-app | |
| run: npx electron-builder ${{ matrix.build-flag }} --publish never | |
| # 4. Upload installers to the release | |
| - name: Upload to GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| desktop-app/dist/*.exe | |
| desktop-app/dist/*.dmg | |
| desktop-app/dist/*.AppImage | |
| desktop-app/dist/*.deb | |
| desktop-app/dist/*.zip | |
| desktop-app/dist/*.tar.gz | |