diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml index c26e142dad..c21de2ab4e 100644 --- a/.github/workflows/desktop-release.yml +++ b/.github/workflows/desktop-release.yml @@ -218,7 +218,7 @@ jobs: permissions: contents: write packages: read - runs-on: ubuntu-24.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -277,26 +277,6 @@ jobs: build_args+=("-c.publish.channel=$RELEASE_CHANNEL") npm run build:desktop "${build_args[@]}" - - 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 dpkg -i 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: Upload packaged smoke diagnostics if: always() uses: actions/upload-artifact@v4 diff --git a/docs/release.md b/docs/release.md index 28415abc8c..d794292b4e 100644 --- a/docs/release.md +++ b/docs/release.md @@ -162,7 +162,7 @@ npm run release:promote # Promote X.Y.Z-beta.N to stable X.Y.Z - Betas publish desktop assets and APKs for testing. They also build iOS, upload it to TestFlight, add it to the `Paseo Beta` external group, and submit it for Beta App Review. They do not submit mobile builds to the production stores. - `release:promote` creates a fresh stable tag like `v0.1.41`; the final release never reuses the beta tag - Desktop assets now come from the Electron package at `packages/desktop` -- Linux artifact launch checks run with both restricted and usable user namespaces before publication; see [packaged desktop smoke](testing.md#packaged-desktop-smoke). Keep the installed-package and AppImage checks together. +- Require the Linux artifact CI checks with both restricted and usable user namespaces to pass before publication; see [packaged desktop smoke](testing.md#packaged-desktop-smoke). Keep the installed-package and AppImage checks together. - Beta releases use Electron's `beta` update channel. Users on the stable channel only receive stable releases; users on the beta channel receive beta releases and the final stable release when it is published. - **Each beta carries its own changelog entry.** `Release Notes Sync` mirrors the matching `## X.Y.Z-beta.N` entry into that prerelease body. Promotion collapses every beta entry for the version into one final stable entry. See the Changelog policy section. diff --git a/docs/testing.md b/docs/testing.md index f201402bb3..ec5626b209 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -114,7 +114,7 @@ The harness launches the packaged app with isolated user data and daemon state, - the renderer starts a fresh desktop-managed daemon through the normal startup bootstrap; - the bundled CLI can query that daemon and run a terminal command. -Pull-request CI runs the Linux x64 smoke under Xvfb when the cumulative PR diff selects desktop coverage. The Linux job is pinned to Ubuntu 24.04 and runs twice: with AppArmor user namespace restrictions enabled, then with user namespaces available. It installs the real `.deb`, launches the real AppImage via `--appimage-extract-and-run`, and launches the extracted tar archive. Each launch verifies the reported sandbox decision; enabled renderers must also have `NoNewPrivs: 1` and `Seccomp: 2` in `/proc`. The desktop release matrix runs the same Linux artifact checks before publishing and retains host-native macOS and Windows smokes. +Pull-request CI runs the Linux x64 smoke under Xvfb when the cumulative PR diff selects desktop coverage. The Linux job is pinned to Ubuntu 24.04 and runs twice: with AppArmor user namespace restrictions enabled, then with user namespaces available. It installs the real `.deb`, launches the real AppImage via `--appimage-extract-and-run`, and launches the extracted tar archive. Each launch verifies the reported sandbox decision; enabled renderers must also have `NoNewPrivs: 1` and `Seccomp: 2` in `/proc`. The desktop release matrix retains its host-native smokes. Linux release builds stay on Ubuntu 22.04 to preserve their native-library baseline; the restricted-host regression runs on Ubuntu 24.04 in PR CI. Never repair `chrome-sandbox` in the smoke harness. The old unpacked smoke set its mode to 4755 and concealed a broken package installer. Run installer tests as root and launch tests as an ordinary user: a root-run namespace probe does not reproduce Ubuntu's AppArmor policy for desktop users. Preserve both restricted and unrestricted cases; either one alone permits another sandbox regression.