Skip to content

fix: Fix release workflow - VS Code and Desktop builds #6

fix: Fix release workflow - VS Code and Desktop builds

fix: Fix release workflow - VS Code and Desktop builds #6

Workflow file for this run

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 }}