feat: #5695 ship Linux arm64 packages in releases by kukirin-ui · Pull Request #5778 · marktext/marktext · GitHub
Skip to content

feat: #5695 ship Linux arm64 packages in releases - #5778

Merged
Jocs merged 2 commits into
marktext:developfrom
kukirin-ui:linux-arm64-builds
Oct 18, 2026
Merged

Jocs merged 2 commits into
marktext:developfrom
kukirin-ui:linux-arm64-builds

Conversation

@kukirin-ui

Copy link
Copy Markdown
Contributor

Closes #5695

Summary

Releases only ship x86_64 Linux packages, while Windows and macOS already get arm64 builds. This adds a linux-arm64 entry to the release matrix (ubuntu-22.04-arm, same Ubuntu version as the x64 release job) and to the PR build matrix (ubuntu-24.04-arm). Both are native arm64 runners, so electron-rebuild builds the native modules for arm64 without any cross-compiling.

  • New build:linux:x64 and build:linux:arm64 scripts, like the existing per-arch mac and win scripts. build:linux is unchanged for local builds.
  • The arm64 build makes AppImage, deb, rpm and tar.gz, named marktext-linux-arm64-<version>.<ext>. The x64 file names stay exactly the same, so existing download links keep working.
  • snap is left out on arm64. electron-builder only has its prebuilt snap template for x64, and an arm64 snap would need snapcraft on the runner.
  • merge-release-artifacts.py now also checks latest-linux-arm64.yml (the file the AppImage updater reads on arm64) the same way it already checks latest-linux.yml.
  • RELEASE.md is updated for the 6-entry matrix and the new asset count (29).

Type of change

  • Bug fix (non-breaking, fixes an issue)
  • New feature (non-breaking, adds functionality)
  • Breaking change (causes existing functionality to change)
  • Documentation update

Test plan

  • New tests added (or explain why not needed)
  • Manually tested on: Linux (GitHub Actions runners, details below)

There is no test suite for the workflows or the merge script, so we tested it like this:

  • Ran the PR build on our fork with only the Linux entries: https://github.com/kukirin-ui/marktext/actions/runs/38985064366. x64 on ubuntu-latest, arm64 on ubuntu-24.04-arm, and arm64 on ubuntu-22.04-arm (the release runner). All three passed. The x64 job still produces marktext-linux-0.22.0-dev.{AppImage,snap,deb,rpm,tar.gz}, and the arm64 jobs produce marktext-linux-arm64-0.22.0-dev.{AppImage,deb,rpm,tar.gz}.
  • Downloaded the arm64 artifact: the deb has Architecture: arm64, and the marktext binary plus the native modules (keytar, ced, native-keymap) are aarch64 ELF files.
  • A second run with dist/*.yml uploaded (https://github.com/kukirin-ui/marktext/actions/runs/38985826222) shows electron-builder writes latest-linux-arm64.yml pointing at the arm64 AppImage.
  • Ran merge-release-artifacts.py on mock artifacts for all six builds. It merges cleanly, and it fails as expected when latest-linux-arm64.yml is missing or an arm64 asset is truncated.
  • Smoke-tested the arm64 packages from the first PR build run above (38985064366) on the native arm64 runners ubuntu-24.04-arm and ubuntu-22.04-arm, under Xvfb: https://github.com/kukirin-ui/marktext/actions/runs/39000909285. On both, the deb installs with apt, marktext --version reports v0.22.0-dev ... OS: Linux arm64, and the installed app (with the normal Chromium sandbox) and the AppImage (FUSE, --no-sandbox) both open a sample .md file, stay running, and show a "sample.md - MarkText" window. Screenshots and logs are uploaded as run artifacts.

Notes for reviewers

We did not run the tag-triggered release workflow itself, since it publishes a release. We tested the same build steps through the PR build. The arm64 smoke test ran on GitHub Actions arm64 runners with a virtual display (Xvfb), not on a physical arm64 machine or a desktop session. The reporter offered to test it on Kylin and Ubuntu arm64 hardware.


By submitting this pull request, I confirm that my contribution is made under the terms of the MIT license.

@Jocs

Jocs commented Oct 18, 2026

Copy link
Copy Markdown
Member

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The only remaining finding is a non-blocking documentation-index nit.

No open issues 🎉

What changed in this PR

Adds native Linux arm64 release builds while preserving existing x64 packages.

Changes:

  • Adds architecture-specific Linux build scripts and workflow jobs.
  • Produces arm64 AppImage, deb, rpm, and tar.gz packages.
  • Validates arm64 updater metadata and updates release documentation.
File Summary
scripts/​merge-release-artifacts.py Validates and merges arm64 Linux metadata.
packages/​website/​content/​docs/​dev/​RELEASE.md Documents the expanded release matrix; nit: regenerate the stale docs index.
packages/​desktop/​package.json Adds architecture-specific Linux build commands.
package.json Exposes the new Linux build scripts.
.github/​workflows/​release.yml Adds native Linux x64 and arm64 release jobs.
.github/​workflows/​build.yml Adds Linux arm64 PR build validation.

Review effort: Lite

@kukirin-ui

Copy link
Copy Markdown
Contributor Author

@Jocs
Jocs merged commit d2e1877 into marktext:develop Oct 18, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Provide Linux ARM64 (.deb) release builds

3 participants