fix: Fix release workflow - VS Code and Desktop builds #6
Workflow file for this run
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: Release All Packages | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version to release (e.g., 0.1.0)' | |
| required: true | |
| default: '0.1.0' | |
| env: | |
| APP_NAME: Hawkeye | |
| jobs: | |
| # ============================================ | |
| # Desktop Builds (Mac/Windows/Linux) - Electron | |
| # ============================================ | |
| build-desktop: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: macos-latest | |
| platform: darwin | |
| arch: arm64 | |
| artifact_name: hawkeye-desktop-mac-arm64 | |
| - os: macos-13 | |
| platform: darwin | |
| arch: x64 | |
| artifact_name: hawkeye-desktop-mac-x64 | |
| - os: windows-latest | |
| platform: win32 | |
| arch: x64 | |
| artifact_name: hawkeye-desktop-win-x64 | |
| - os: ubuntu-latest | |
| platform: linux | |
| arch: x64 | |
| artifact_name: hawkeye-desktop-linux-x64 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Install Linux Dependencies | |
| if: matrix.platform == 'linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libgtk-3-dev \ | |
| libnotify-dev \ | |
| libnss3 \ | |
| libxss1 \ | |
| libasound2t64 \ | |
| libxtst6 \ | |
| xvfb | |
| - name: Install Dependencies | |
| run: pnpm install --no-frozen-lockfile | |
| - name: Build Core | |
| run: pnpm build:core | |
| - name: Build Desktop | |
| run: pnpm build | |
| working-directory: packages/desktop | |
| - name: Build Desktop App (macOS) | |
| if: matrix.platform == 'darwin' | |
| run: pnpm package:mac | |
| working-directory: packages/desktop | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| CSC_LINK: ${{ secrets.MAC_CERTS }} | |
| CSC_KEY_PASSWORD: ${{ secrets.MAC_CERTS_PASSWORD }} | |
| - name: Build Desktop App (Windows) | |
| if: matrix.platform == 'win32' | |
| run: pnpm package:win | |
| working-directory: packages/desktop | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build Desktop App (Linux) | |
| if: matrix.platform == 'linux' | |
| run: xvfb-run --auto-servernum pnpm package:linux | |
| working-directory: packages/desktop | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Upload macOS Artifacts | |
| if: matrix.platform == 'darwin' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.artifact_name }} | |
| path: | | |
| packages/desktop/out/*.dmg | |
| packages/desktop/out/*.zip | |
| if-no-files-found: warn | |
| - name: Upload Windows Artifacts | |
| if: matrix.platform == 'win32' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.artifact_name }} | |
| path: | | |
| packages/desktop/out/*.exe | |
| packages/desktop/out/*.msi | |
| if-no-files-found: warn | |
| - name: Upload Linux Artifacts | |
| if: matrix.platform == 'linux' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.artifact_name }} | |
| path: | | |
| packages/desktop/out/*.AppImage | |
| packages/desktop/out/*.deb | |
| packages/desktop/out/*.rpm | |
| if-no-files-found: warn | |
| # ============================================ | |
| # Chrome Extension Build | |
| # ============================================ | |
| build-chrome-extension: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Install Dependencies | |
| run: pnpm install --no-frozen-lockfile | |
| working-directory: packages/chrome-extension | |
| - name: Build Chrome Extension | |
| run: pnpm build | |
| working-directory: packages/chrome-extension | |
| - name: Create Extension ZIP | |
| run: | | |
| cd packages/chrome-extension/dist | |
| zip -r ../hawkeye-chrome-extension.zip . | |
| - name: Upload Chrome Extension Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: hawkeye-chrome-extension | |
| path: packages/chrome-extension/hawkeye-chrome-extension.zip | |
| - name: Upload to Chrome Web Store | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
| uses: mnao305/chrome-extension-upload@v5.0.0 | |
| with: | |
| file-path: packages/chrome-extension/hawkeye-chrome-extension.zip | |
| extension-id: ${{ secrets.CHROME_EXTENSION_ID }} | |
| client-id: ${{ secrets.CHROME_CLIENT_ID }} | |
| client-secret: ${{ secrets.CHROME_CLIENT_SECRET }} | |
| refresh-token: ${{ secrets.CHROME_REFRESH_TOKEN }} | |
| continue-on-error: true | |
| # ============================================ | |
| # VS Code Extension Build | |
| # ============================================ | |
| build-vscode-extension: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Install Dependencies | |
| run: npm install | |
| working-directory: packages/vscode-extension | |
| - name: Install vsce | |
| run: npm install -g @vscode/vsce | |
| - name: Build VS Code Extension | |
| run: npm run build | |
| working-directory: packages/vscode-extension | |
| - name: Package VSIX | |
| run: vsce package -o hawkeye-vscode-extension.vsix | |
| working-directory: packages/vscode-extension | |
| - name: Upload VS Code Extension Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: hawkeye-vscode-extension | |
| path: packages/vscode-extension/hawkeye-vscode-extension.vsix | |
| - name: Publish to VS Code Marketplace | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
| run: vsce publish -p ${{ secrets.VSCE_PAT }} | |
| working-directory: packages/vscode-extension | |
| continue-on-error: true | |
| # ============================================ | |
| # Create GitHub Release | |
| # ============================================ | |
| create-release: | |
| needs: [build-desktop, build-chrome-extension, build-vscode-extension] | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Download All Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Display Artifacts | |
| run: ls -R artifacts | |
| - name: Get Version | |
| id: version | |
| run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| name: Hawkeye ${{ steps.version.outputs.VERSION }} | |
| draft: false | |
| prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }} | |
| generate_release_notes: true | |
| files: | | |
| artifacts/hawkeye-desktop-mac-arm64/* | |
| artifacts/hawkeye-desktop-mac-x64/* | |
| artifacts/hawkeye-desktop-win-x64/* | |
| artifacts/hawkeye-desktop-linux-x64/* | |
| artifacts/hawkeye-chrome-extension/* | |
| artifacts/hawkeye-vscode-extension/* | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |