name: Build & Upload Linux Packages on: workflow_dispatch: inputs: tag: description: 'Release tag to upload assets to (e.g. v2.0.0)' required: true default: 'v2.0.0' jobs: build-linux: runs-on: ubuntu-22.04 permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install Linux build tools run: | sudo apt-get update -qq sudo apt-get install -y -qq rpm fakeroot dpkg libarchive-tools - name: Install workspace dependencies run: npm install --legacy-peer-deps - name: Install app-builder to system PATH run: | # The binary is bundled in the npm package for the current platform. # Copy it to /usr/local/bin so USE_SYSTEM_APP_BUILDER=true can find it. BINARY=$(node -e "console.log(require('./node_modules/app-builder-bin').appBuilderPath)") echo "app-builder binary: $BINARY" chmod +x "$BINARY" sudo cp "$BINARY" /usr/local/bin/app-builder app-builder --version - name: Vite build run: npx electron-vite build working-directory: apps/desktop - name: Bundle standalone scheduler run: node scripts/bundle-standalone.js working-directory: apps/desktop - name: Build Linux x64 packages run: npx electron-builder --linux --x64 --publish never working-directory: apps/desktop env: CSC_IDENTITY_AUTO_DISCOVERY: "false" USE_SYSTEM_APP_BUILDER: "true" - name: Build Linux arm64 packages run: npx electron-builder --linux --arm64 --publish never working-directory: apps/desktop env: CSC_IDENTITY_AUTO_DISCOVERY: "false" USE_SYSTEM_APP_BUILDER: "true" - name: List build output run: ls -lh apps/desktop/dist/ - name: Upload Linux packages to release uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.event.inputs.tag }} files: | apps/desktop/dist/*.AppImage apps/desktop/dist/*.deb apps/desktop/dist/*.rpm env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}