name: Desktop Packages on: push: branches: [main] permissions: contents: read env: ONNXRUNTIME_NODE_INSTALL: skip jobs: linux: runs-on: ubuntu-24.04 timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22" cache: "npm" - name: Install dependencies run: node scripts/npm-retry.mjs ci - name: Install package smoke dependencies run: sudo apt-get update && sudo apt-get install -y xvfb xauth rpm - name: Build Linux desktop artifacts # Smoke package contents and installation without spending minutes on xz compression. run: | printf '{"extends":"%s/packages/desktop/electron-builder.yml","deb":{"compression":"gz"},"rpm":{"fpm":["--rpm-compression=gzip"]}}' "$GITHUB_WORKSPACE" > "$RUNNER_TEMP/desktop-smoke-builder.json" npm run build:desktop -- --publish never --linux --x64 --config "$RUNNER_TEMP/desktop-smoke-builder.json" env: EP_GH_IGNORE_TIME: true PASEO_DESKTOP_SMOKE_ARTIFACT_DIR: ${{ runner.temp }}/desktop-smoke - name: Smoke installed artifacts with restricted user namespaces run: | sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=1 if unshare --user --map-root-user --net true; then echo "Expected the launching user's namespace probe to be denied" exit 1 fi sudo apt-get install -y ./packages/desktop/release/*.deb node packages/desktop/e2e/linux-artifact-smoke.js packages/desktop/release disabled env: PASEO_DESKTOP_SMOKE_ARTIFACT_DIR: ${{ runner.temp }}/desktop-smoke/restricted - name: Smoke sandbox-preserving portable launches run: | sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 unshare --user --map-root-user --net true node packages/desktop/e2e/linux-artifact-smoke.js packages/desktop/release enabled env: PASEO_DESKTOP_SMOKE_ARTIFACT_DIR: ${{ runner.temp }}/desktop-smoke/userns - name: Smoke installed RPM with restricted user namespaces run: | sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=1 sudo dpkg --remove paseo # Ubuntu supplies the runtime libraries under Debian package names. # RPM still performs the real payload installation and postinstall. sudo rpm --install --nodeps packages/desktop/release/*.rpm node packages/desktop/e2e/linux-artifact-smoke.js packages/desktop/release disabled --installed-only env: PASEO_DESKTOP_SMOKE_ARTIFACT_DIR: ${{ runner.temp }}/desktop-smoke/rpm - name: Upload packaged smoke diagnostics uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} with: name: desktop-packaged-smoke-linux-x64 path: ${{ runner.temp }}/desktop-smoke if-no-files-found: ignore retention-days: 7