# Simplified workflow using custom electerm-builder Docker image name: linux-legacy-docker on: push: branches: [ build, test, build-only, linux-legacy, legacy-build ] workflow_dispatch: jobs: build: runs-on: ubuntu-latest container: zxdong262/electerm-builder-legacy:latest # This will be our custom image 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 legacy]') && !contains(github.event.head_commit.message, '[skip linux-legacy]') }} steps: - name: Clone repository to /tmp and setup run: | cd /tmp git clone https://github.com/electerm/electerm.git electerm_build cd electerm_build git checkout ${{ github.sha }} # Configure npm to use /tmp for cache and global packages mkdir -p /tmp/.npm /tmp/.npm-global npm config set cache /tmp/.npm npm config set prefix /tmp/.npm-global export PATH="/tmp/.npm-global/bin:$PATH" echo "PATH=/tmp/.npm-global/bin:$PATH" >> $GITHUB_ENV echo "npm_config_cache=/tmp/.npm" >> $GITHUB_ENV echo "npm_config_prefix=/tmp/.npm-global" >> $GITHUB_ENV - name: Verify pre-installed versions working-directory: /tmp/electerm_build run: | echo "=== Pre-installed versions ===" node --version npm --version yarn --version python3 --version python --version gcc --version g++ --version fpm --version - name: Clear electron-builder cache working-directory: /tmp/electerm_build run: rm -rf ~/.cache/electron-builder - name: ci init working-directory: /tmp/electerm_build run: npm config set legacy-peer-deps true - name: Update electron version and remove package-lock working-directory: /tmp/electerm_build 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'] = '0.10.1'; pkg.dependencies.serialport = '10.5.0'; pkg.devDependencies.vite = '4'; pkg.devDependencies['@vitejs/plugin-react'] = '4.7.0'; fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2)); fs.unlinkSync('package-lock.json'); " - name: Install npm dependencies working-directory: /tmp/electerm_build run: npm i && npm i -S @electron/rebuild@3.7.2 - name: Install R2 dependencies if needed working-directory: /tmp/electerm_build if: ${{ contains(github.event.head_commit.message, '[r2]') }} run: npm i -D @aws-sdk/client-s3 - name: Verify updated dependencies working-directory: /tmp/electerm_build run: | echo "Verifying updated dependencies:" npm list electron --depth=0 npm list @electron/rebuild --depth=0 npm list node-pty --depth=0 npm list serialport --depth=0 npm list vite --depth=0 - name: Build application working-directory: /tmp/electerm_build run: npm run b - name: Run pb working-directory: /tmp/electerm_build run: npm run pb - name: Build legacy packages working-directory: /tmp/electerm_build env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} BUILD_NUMBER: ${{ secrets.BUILD_NUMBER }} USE_SYSTEM_FPM: true WORKFLOW_NAME: ${{ github.workflow }} 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 }} run: node build/bin/build-linux-legacy