# Alternative workflow using native ARM64 runners name: linux-arm-native on: push: branches: [ build, test, build-only, linux-arm ] workflow_dispatch: jobs: build: runs-on: ubuntu-24.04-arm environment: build if: ${{ !contains(github.event.head_commit.message, '[skip build]') && !contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[skip arm-linux]') && !contains(github.event.head_commit.message, '[skip linux3]') }} env: # Force electron-builder to use the system fpm (ARM native) instead of downloading x86 prebuilt bundle USE_SYSTEM_FPM: true steps: - uses: actions/checkout@v4 - name: Set up Node.js 16.x uses: actions/setup-node@v4 with: node-version: 16.x - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y \ python3-dev \ build-essential \ libnss3-dev \ libsecret-1-dev \ fakeroot \ rpm \ libgtk-3-0 \ libnotify4 \ libnss3 \ libxss1 \ libxtst6 \ xdg-utils \ libatspi2.0-0 \ libuuid1 \ libsecret-1-0 \ libappindicator3-1 \ ruby-full - name: Install FPM run: sudo gem install fpm - name: Verify glibc version run: ldd --version - name: Verify fpm run: | which fpm fpm --version - name: Install yarn run: npm install -g yarn - name: ci init run: npm config set legacy-peer-deps true - name: Clear electron-builder cache run: rm -rf ~/.cache/electron-builder - name: Update electron version and remove package-lock run: | node -e " const fs = require('fs'); const pkg = JSON.parse(fs.readFileSync('package.json')); pkg.devDependencies.electron = '22.3.27'; pkg.devDependencies['electron-builder'] = '26.0.20'; pkg.devDependencies['@electron/rebuild'] = '3.7.2'; pkg.dependencies['node-pty'] = '1.1.0-beta14'; pkg.dependencies.serialport = '13.0.0'; pkg.devDependencies.vite = '4'; pkg.devDependencies['@vitejs/plugin-react'] = '4.7.0'; fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2)); " rm -f package-lock.json - name: Install npm dependencies run: npm i && npm i -S @electron/rebuild@3.7.2 - name: Install R2 dependencies if needed if: ${{ contains(github.event.head_commit.message, '[r2]') }} run: npm i -D @aws-sdk/client-s3 - name: Build application run: npm run b - name: Run pb run: npm run pb - name: Build ARM64 packages env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} CF_R2_ACCOUNT_ID: ${{ secrets.CF_R2_ACCOUNT_ID }} CF_R2_BUCKET: ${{ secrets.CF_R2_BUCKET }} CF_R2_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }} CF_R2_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_SECRET_ACCESS_KEY }} BUILD_NUMBER: ${{ secrets.BUILD_NUMBER }} WORKFLOW_NAME: ${{ github.workflow }} run: node build/bin/build-linux-arm