name: Build Electron on: push: branches: - main tags: - 'v*' workflow_dispatch: jobs: build: name: Build (${{ matrix.os }}) runs-on: ${{ matrix.os }} timeout-minutes: 30 permissions: contents: write strategy: fail-fast: false matrix: include: - os: macos-latest platform: mac-arm64 build_args: --mac --arm64 - os: macos-latest platform: mac-x64 build_args: --mac --x64 - os: windows-latest platform: win build_args: --win - os: ubuntu-latest platform: linux build_args: --linux steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 with: bun-version: latest - uses: actions/setup-node@v4 with: node-version: 20 - name: Install dependencies run: bun install --frozen-lockfile - name: Build web (electron target) run: bun --bun run build env: BUILD_TARGET: electron - name: Compile electron run: bun run electron:compile - name: Compile MCP server run: bun run mcp:compile - name: Build Electron app run: npx electron-builder --config apps/desktop/electron-builder.yml ${{ matrix.build_args }} --publish never env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_LINK: ${{ secrets.CSC_LINK }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }} WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - name: Rename arm64 update metadata if: matrix.platform == 'mac-arm64' run: | if [ -f out/release/latest-mac.yml ]; then mv out/release/latest-mac.yml out/release/latest-mac-arm64.yml fi - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: electron-${{ matrix.platform }} path: | out/release/*.dmg out/release/*.zip out/release/*.exe out/release/*.AppImage out/release/*.deb out/release/latest*.yml out/release/*.blockmap !out/release/builder-debug.yml retention-days: 30 release: name: Create Release runs-on: ubuntu-latest needs: build if: startsWith(github.ref, 'refs/tags/v') permissions: contents: write steps: - uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts/ merge-multiple: true - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: draft: false generate_release_notes: true files: artifacts/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}