Skip to content

Improve macOS codesigning process in CI workflow #28

Improve macOS codesigning process in CI workflow

Improve macOS codesigning process in CI workflow #28

Workflow file for this run

name: Build Windows
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
workflow_dispatch: # Manual trigger
concurrency:
group: build-windows-${{ github.ref }}
cancel-in-progress: false
jobs:
build-windows:
name: Build Windows (x64)
runs-on: windows-latest
timeout-minutes: 120
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Setup Python 3
uses: actions/setup-python@v6
with:
python-version: '3.11'
- name: Install tsx (TypeScript runner)
run: npm install -g tsx
- name: Run preinstall script manually
run: tsx build/npm/preinstall.ts
- name: Install dependencies (skip scripts)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npm install --ignore-scripts
- name: Run postinstall script manually
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: tsx build/npm/postinstall.ts
- name: Rebuild native modules
run: npm rebuild
- name: Install roopik-roo extension dependencies
working-directory: extensions/roopik-roo
shell: bash
run: |
if ! npm install; then
echo "Normal install failed, trying with --legacy-peer-deps..."
npm install --legacy-peer-deps
node ../../.github/scripts/install-all-peer-deps.js || true
fi
- name: Install @roo-code/types dependencies
working-directory: extensions/roopik-roo/packages/types
run: npm install
- name: Build @roo-code/types package
working-directory: extensions/roopik-roo/packages/types
run: npm run build
- name: Install @roo-code/build dependencies
working-directory: extensions/roopik-roo/packages/build
run: npm install
- name: Build @roo-code/build package
working-directory: extensions/roopik-roo/packages/build
run: npm run build
- name: Create .env file for roopik-roo
working-directory: extensions/roopik-roo
shell: bash
env:
ROO_CODE_API_URL: ${{ secrets.ROO_CODE_API_URL || 'https://app.roocode.com' }}
ROO_CODE_PROVIDER_URL: ${{ secrets.ROO_CODE_PROVIDER_URL || 'https://app.roocode.com/proxy/v1' }}
POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY || '' }}
run: |
cat > .env << EOF
ROO_CODE_API_URL=${ROO_CODE_API_URL}
ROO_CODE_PROVIDER_URL=${ROO_CODE_PROVIDER_URL}
POSTHOG_API_KEY=${POSTHOG_API_KEY}
EOF
- name: Build roopik-roo extension
working-directory: extensions/roopik-roo
run: npm run build
- name: Install roopik extension dependencies (skip postinstall)
working-directory: extensions/roopik
run: npm install --ignore-scripts
- name: Install roopik webview dependencies
working-directory: extensions/roopik/webview
run: npm install
- name: Build roopik extension
working-directory: extensions/roopik
run: npm run build
- name: Clean non-Windows prebuilds from node_modules
shell: bash
run: |
# Remove macOS and Linux prebuilds to prevent rcedit.exe errors
find node_modules -type d -name "prebuilds" -exec sh -c '
for dir in "$1"/*; do
case "$(basename "$dir")" in
darwin-*|linux-*) rm -rf "$dir" ;;
esac
done
' sh {} \;
- name: Build Windows application
run: npm run gulp vscode-win32-x64
- name: Prepare Inno Setup tools
run: npm run gulp vscode-win32-x64-inno-updater
- name: Build Windows installer (User)
run: npm run gulp vscode-win32-x64-user-setup
# System installer commented out - use User installer for most cases
# Uncomment if you need system-wide installation for all users
# - name: Build Windows installer (System)
# run: npm run gulp vscode-win32-x64-system-setup
- name: Copy portable build to workspace
shell: bash
run: |
# Copy and rename to Roopik branding
cp -r ../VSCode-win32-x64 ./Roopik-Portable-win32-x64
- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: roopik-windows-x64
path: |
Roopik-Portable-win32-x64/
.build/win32-x64/user-setup/
retention-days: 30