add react compiler (#306) #544
This file contains 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: Build | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
types: [opened, synchronize, reopened] | |
jobs: | |
sonarcloud: | |
name: SonarCloud | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: SonarCloud Scan Electron | |
uses: SonarSource/sonarcloud-github-action@master | |
with: | |
projectBaseDir: electron | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
- name: SonarCloud Scan Client | |
uses: SonarSource/sonarcloud-github-action@master | |
with: | |
projectBaseDir: client | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
build: | |
name: Build (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-15, macos-latest, windows-latest] | |
node-version: [22.x] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install pnpm | |
uses: pnpm/action-setup@v2 | |
with: | |
version: 9 | |
run_install: false | |
- name: Get Package Version | |
id: package_version | |
shell: bash | |
run: echo "PACKAGE_VERSION=$(node -p -e "require('./electron/package.json').version")" >> $GITHUB_ENV | |
- name: Setup Sentry Release | |
if: matrix.os == 'ubuntu-latest' | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
run: | | |
pnpm dlx @sentry/cli releases set-commits "${{ env.PACKAGE_VERSION }}" --commit "${{ github.repository }}@${{ github.sha }}" | |
pnpm dlx @sentry/cli releases new "${{ env.PACKAGE_VERSION }}" | |
- name: Install Python Setuptools on Ubuntu | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y python3-setuptools | |
- name: Install Python Setuptools on macOS | |
if: startsWith(matrix.os, 'macos') | |
run: brew install python-setuptools | |
- name: Install Python Setuptools on Windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
python -m pip install --upgrade pip | |
pip install setuptools | |
- name: Install Dependencies (Electron) | |
shell: bash | |
run: | | |
cd electron | |
if [ "${{ matrix.os }}" = "macos-15" ]; then | |
export npm_config_arch=x64 | |
elif [ "${{ matrix.os }}" = "macos-latest" ]; then | |
export npm_config_arch=arm64 | |
fi | |
pnpm install --no-frozen-lockfile | |
cd .. | |
- name: Install Dependencies (Client) | |
run: | | |
cd client | |
pnpm install --no-frozen-lockfile | |
cd .. | |
- name: Build Client | |
run: | | |
cd client | |
pnpm build | |
cd .. | |
- name: Create .env file | |
shell: bash | |
run: | | |
cd electron | |
echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env | |
cd .. | |
- name: Build and Release Electron App | |
shell: bash | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
DEBUG: electron-builder,electron-builder:* | |
CSC_LINK: ${{ secrets.CSC_LINK }} | |
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} | |
APPLE_ID: ${{ secrets.APPLE_ID }} | |
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} | |
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
CSC_IDENTITY_AUTO_DISCOVERY: ${{ matrix.os != 'windows-latest' }} | |
run: | | |
cd electron | |
pnpm build | |
pnpm prepare_client | |
# Determine the architecture to build | |
if [ "${{ matrix.os }}" = "macos-15" ]; then | |
ARCH="x64" | |
elif [ "${{ matrix.os }}" = "macos-latest" ]; then | |
ARCH="arm64" | |
fi | |
pnpm release -- --mac --${ARCH} | |
cd .. | |
- name: Upload Sentry Sourcemaps | |
if: matrix.os == 'ubuntu-latest' | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
run: | | |
pnpm dlx @sentry/cli releases files "${{ env.PACKAGE_VERSION }}" upload-sourcemaps ./client/dist/assets/ --rewrite --url-prefix "~/dist/assets" | |
pnpm dlx @sentry/cli releases files "${{ env.PACKAGE_VERSION }}" list | |
pnpm dlx @sentry/cli releases finalize "${{ env.PACKAGE_VERSION }}" | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }}-build | |
path: | | |
electron/packaged/*.dmg | |
electron/packaged/*.AppImage | |
electron/packaged/*.deb | |
electron/packaged/*.rpm | |
electron/packaged/*.exe | |
electron/packaged/*.msi |