Add ARM64 Linux Snap builds with selectable core22/core24 bases - #338607
Dr Bill Mcilhargey (billmcilhargey) wants to merge 4 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Core22 publishing remains insufficiently gated, and privileged QEMU setup uses a mutable image tag.
Review effort: Balanced
Findings: 1
Open (2)
What changed in this PR
Adds ARM64 Snap packaging, updates the default base to core24, and supports unpublished core22 validation builds.
Changes:
- Adds architecture-aware Snapcraft manifests, builders, libraries, and launcher paths.
- Produces and sanity-checks ARM64 Snap artifacts.
- Adds focused packaging tests and release-validation documentation.
| File | Description |
|---|---|
test/sanity/src/desktop.test.ts |
Adds ARM64 Snap sanity coverage. |
test/sanity/src/context.ts |
Registers and verifies Snap artifacts. |
resources/linux/snap/snapcraft.yaml |
Templates base, architecture, libraries, and RPATH. |
resources/linux/snap/README.md |
Documents build and release validation. |
resources/linux/snap/electron-launch |
Resolves runtime paths from Snap metadata. |
build/linux/snapcraftConfig.ts |
Defines base- and architecture-specific configuration. |
build/lib/test/buildSnap.test.ts |
Tests manifests, builders, and launch behavior. |
build/gulpfile.vscode.linux.ts |
Renders the Snapcraft template. |
build/azure-pipelines/product-build.yml |
Wires build parameters and artifact sanity jobs. |
build/azure-pipelines/product-build-template.yml |
Mirrors Snap build configuration. |
build/azure-pipelines/product-build-ado-ci.yml |
Updates the Snap parameter label. |
build/azure-pipelines/linux/steps/product-build-linux-compile.yml |
Builds x64 and ARM64 Snaps. |
build/azure-pipelines/linux/snapcraft-ubuntu-24-arm64.sources |
Adds Noble ARM64 mirrors. |
build/azure-pipelines/linux/snapcraft-ubuntu-24-amd64.sources |
Adds Noble amd64 mirrors. |
build/azure-pipelines/linux/snapcraft-ubuntu-22-arm64.list |
Adds Jammy ARM64 mirrors. |
build/azure-pipelines/linux/snapcraft-ubuntu-22-amd64.list |
Adds Jammy amd64 mirrors. |
build/azure-pipelines/linux/snapcraft-apt-retries.conf |
Configures Apt retries. |
build/azure-pipelines/linux/product-build-linux.yml |
Propagates the selected Snap base. |
build/azure-pipelines/linux/build-snap.sh |
Validates and packages architecture-matched Snaps. |
.github/skills/azure-pipelines/SKILL.md |
Documents new pipeline options. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Native ARM64 validation proposal (not yet implemented): GitHub offers a VM runner labeled Artifact handoff must be trusted: forked PR Actions jobs cannot access Azure/organization secrets (https://docs.github.com/en/code-security/reference/secret-security/secret-types). Prefer a maintainer-owned manual Repro gate: download and hash-check Current limitations: |
📬 CODENOTIFYThe following users are being notified based on files changed in this PR: Ladislau Szomoru (@lszomoru)Matched files:
Dmitriy Vasyura (@dmitrivMS)Matched files:
|
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reviewer guide — implementation and remaining gatesWhy: The ARM64 request (#125120; duplicate #269552) cannot be satisfied by labeling an amd64 snap as arm64: the Electron binary and staged Ubuntu libraries must match the target architecture. This PR builds both architecture-specific snaps; it does not publish them to the Snap Store. What to review, in build order:
Evidence: 35 focused Snap tests pass; ten Azure pipeline YAML files and six rendered Snap manifests parsed after the Linux-stage merge; the current Compile & Hygiene check passes. The earlier Copilot review comments (core22 publication guard and privileged QEMU pin) are resolved. Not yet evidence of a working Store release: No Azure product Snap build or native Ubuntu ARM64 GUI installation has been run. The ARM64 artifact sanity job only downloads the artifact on an x64 runner, and the Playwright UI test currently launches the raw Electron binary rather than the snap's This overlaps #298237 and #271464; coordinate or cherry-pick the packaging work rather than merging overlapping alternatives independently. It does not include the separate alternatives-registration or terminal-environment changes proposed there. |


Build ARM64 Linux Snap artifacts from native-architecture staged libraries, keeping core24 as the default and offering core22 for unpublished validation builds.
Changes
Related
Refs #125120 and #269552. Related to base/runtime report #241636. This is a follow-up/alternative to #298237 and #271464; please coordinate overlapping changes rather than merging both independently. It does not claim to fix their separate alternatives-registration or terminal-environment work. Do not close the ARM64 issues until snaps are available in the Store.
Validation and remaining work
node --test build/lib/test/buildSnap.test.ts: 35 passing after resolving the Linux-stage split conflicts.VSCODE_PUBLISH=false,VSCODE_RUN_ARTIFACT_SANITY_TESTS=true) and complete native ARM64 validation. The ARM64 artifact sanity job currently downloads the snap but cannot launch it on the x64 runner.Policy / maintainer coordination
The VS Code PR Check currently fails because a community-classified PR may not modify protected engineering files under
build/orbuild/azure-pipelines/. The check requires a team-member-authored PR, a head commit signed by a trusted team-member key, or authorized automation; simply making this commit GitHub Verified would not satisfy it. Please have a VS Code build maintainer review and adopt/cherry-pick the relevant changes rather than bypassing the policy. This PR is for review and coordination, not an assertion that the release gate has passed.