Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/release-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -198,14 +198,13 @@ jobs:
env:
APPIMAGE_NAME: ${{ steps.preflight.outputs.appImage }}
DEB_NAME: ${{ steps.preflight.outputs.deb }}
run: sha256sum "$APPIMAGE_NAME" "${APPIMAGE_NAME}.blockmap" latest-linux.yml "$DEB_NAME" > SHA256SUMS-linux.txt
run: sha256sum "$APPIMAGE_NAME" latest-linux.yml "$DEB_NAME" > SHA256SUMS-linux.txt
- name: Upload verified release assets
uses: actions/upload-artifact@v7
with:
name: linux-x64-release
path: |
dist/${{ steps.preflight.outputs.appImage }}
dist/${{ steps.preflight.outputs.appImage }}.blockmap
dist/latest-linux.yml
dist/${{ steps.preflight.outputs.deb }}
dist/SHA256SUMS-linux.txt
Expand Down
5 changes: 3 additions & 2 deletions docs/release/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ Pace 的 Linux 发行版是 **x64 AppImage** 与 **deb**,与 macOS ARM64 打
| 文件 | 用途 |
| --- | --- |
| `Pace-<version>-x64.AppImage` | 首次安装,也是应用内更新的安装包 |
| `Pace-<version>-x64.AppImage.blockmap` | AppImage 差分更新 |
| `latest-linux.yml` | electron-updater 的 Linux feed。必须原样上传 |
| `Pace-<version>-x64.deb` | Debian / Ubuntu 安装包。**不会**自动更新,升级需要重新安装 |
| `SHA256SUMS-linux.txt` | 覆盖上面四个文件 |
| `SHA256SUMS-linux.txt` | 覆盖上面三个文件 |

AppImage 差分更新使用内嵌在 AppImage 尾部的 blockmap(`latest-linux.yml` 的 `blockMapSize` 指向它),electron-builder 不产出 `.blockmap` 旁车文件。

deb 只负责安装。应用内更新只走 AppImage(ADR-0033)。

Expand Down
8 changes: 8 additions & 0 deletions electron-builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ dmg:
type: link
path: /Applications

# The global artifactName's ${arch} expands to x86_64 for AppImage and amd64
# for deb (builder-util getArtifactArchName). Release scripts, docs and the
# updater feed use -x64; only x64 is built, so pin the name per target.
appImage:
artifactName: ${productName}-${version}-x64.${ext}
deb:
artifactName: ${productName}-${version}-x64.${ext}

linux:
# Global forceCodeSigning stays on for macOS. Linux has no signing identity
# in CI; setting false here stops this platform from inheriting the global flag.
Expand Down
3 changes: 2 additions & 1 deletion scripts/publish-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ assets=(
"dist/${zip_name}.blockmap"
"dist/latest-mac.yml"
"dist/SHA256SUMS.txt"
# The AppImage blockmap is embedded in the file (latest-linux.yml's
# blockMapSize); there is no .blockmap sidecar to ship.
"dist/$APPIMAGE_NAME"
"dist/${APPIMAGE_NAME}.blockmap"
"dist/latest-linux.yml"
"dist/$DEB_NAME"
"dist/SHA256SUMS-linux.txt"
Expand Down
6 changes: 5 additions & 1 deletion scripts/test-release-publish.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ const releaseAssets = (version) => {
`${zipArtifact}.blockmap`,
"latest-mac.yml",
"SHA256SUMS.txt",
// The AppImage blockmap is embedded in the AppImage itself
// (latest-linux.yml's blockMapSize); no sidecar is produced.
appImage,
`${appImage}.blockmap`,
"latest-linux.yml",
deb,
"SHA256SUMS-linux.txt",
Expand Down Expand Up @@ -109,6 +110,9 @@ test("a stable release is published only after every required asset reaches its
assert.ok(edit.includes("--prerelease=false"));
assert.ok(edit.includes("--latest=true"));
assert.ok(calls.indexOf(edit) > calls.indexOf(create));
// The AppImage blockmap is embedded; nothing may upload a sidecar.
const uploads = calls.filter(args => args[1] === "upload").flat();
assert.ok(!uploads.some(arg => arg.endsWith(".AppImage.blockmap")));
});

test("a prerelease is published without becoming the latest stable release", t => {
Expand Down
Loading