Skip to content

Commit 0774853

Browse files
committed
fix: split sparkle appcasts by arch
1 parent dff7536 commit 0774853

2 files changed

Lines changed: 28 additions & 11 deletions

File tree

.github/workflows/release.yml

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ env:
1515
MACOS_NOTARY_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
1616
SPARKLE_ENABLE: ${{ vars.SPARKLE_ENABLE }}
1717
SPARKLE_APPCAST_BRANCH: ${{ vars.SPARKLE_APPCAST_BRANCH }}
18-
SPARKLE_FEED_URL: ${{ secrets.SPARKLE_FEED_URL }}
1918
SPARKLE_PRIVATE_ED_KEY: ${{ secrets.SPARKLE_PRIVATE_ED_KEY }}
2019
SPARKLE_PUBLIC_ED_KEY: ${{ secrets.SPARKLE_PUBLIC_ED_KEY }}
2120
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
@@ -60,6 +59,8 @@ jobs:
6059
package-ext: dmg
6160
asset-name: GetTokens_macOS_AppleSilicon.dmg
6261
updater-asset-name: GetTokens_macOS_AppleSilicon.tar.gz
62+
sparkle-appcast-name: appcast-arm64.xml
63+
sparkle-feed-url: https://raw.githubusercontent.com/AxApp/GetTokens/sparkle-appcast/appcast-arm64.xml
6364

6465
- runner: macos-15-intel
6566
os-name: macOS amd64
@@ -69,6 +70,8 @@ jobs:
6970
package-ext: dmg
7071
asset-name: GetTokens_macOS_Intel.dmg
7172
updater-asset-name: GetTokens_macOS_Intel.tar.gz
73+
sparkle-appcast-name: appcast-amd64.xml
74+
sparkle-feed-url: https://raw.githubusercontent.com/AxApp/GetTokens/sparkle-appcast/appcast-amd64.xml
7275

7376
steps:
7477
- uses: actions/checkout@v5
@@ -169,6 +172,8 @@ jobs:
169172
run: |
170173
chmod +x scripts/configure-sparkle-macos.sh
171174
scripts/configure-sparkle-macos.sh "build/bin/GetTokens.app"
175+
env:
176+
SPARKLE_FEED_URL: ${{ matrix.sparkle-feed-url }}
172177

173178
- name: Embed Sparkle framework
174179
if: runner.os == 'macOS' && env.SPARKLE_ENABLE == '1'
@@ -239,20 +244,30 @@ jobs:
239244
APPCAST_BRANCH="${SPARKLE_APPCAST_BRANCH:-sparkle-appcast}"
240245
if git ls-remote --exit-code origin "refs/heads/${APPCAST_BRANCH}" >/dev/null 2>&1; then
241246
git fetch origin "${APPCAST_BRANCH}:${APPCAST_BRANCH}"
242-
if git cat-file -e "${APPCAST_BRANCH}:appcast.xml" 2>/dev/null; then
243-
git show "${APPCAST_BRANCH}:appcast.xml" > dist/sparkle-feed/appcast.xml
244-
fi
247+
for appcast_name in appcast-arm64.xml appcast-amd64.xml; do
248+
if git cat-file -e "${APPCAST_BRANCH}:${appcast_name}" 2>/dev/null; then
249+
git show "${APPCAST_BRANCH}:${appcast_name}" > "dist/sparkle-feed/${appcast_name}"
250+
fi
251+
done
245252
fi
246253
247-
- name: Generate Sparkle appcast
254+
- name: Generate Sparkle appcasts
248255
shell: bash
249256
run: |
250257
chmod +x scripts/prepare-sparkle-framework.sh scripts/generate-sparkle-appcast.sh
258+
SPARKLE_ARCHIVE_PATTERN="GetTokens_macOS_AppleSilicon.dmg" \
259+
SPARKLE_APPCAST_NAME="appcast-arm64.xml" \
260+
SPARKLE_RELEASE_BASE_URL="https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}" \
261+
SPARKLE_FULL_RELEASE_NOTES_URL="https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}" \
262+
SPARKLE_PRODUCT_URL="https://github.com/${{ github.repository }}" \
263+
scripts/generate-sparkle-appcast.sh dist/release dist/sparkle-feed
264+
265+
SPARKLE_ARCHIVE_PATTERN="GetTokens_macOS_Intel.dmg" \
266+
SPARKLE_APPCAST_NAME="appcast-amd64.xml" \
267+
SPARKLE_RELEASE_BASE_URL="https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}" \
268+
SPARKLE_FULL_RELEASE_NOTES_URL="https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}" \
269+
SPARKLE_PRODUCT_URL="https://github.com/${{ github.repository }}" \
251270
scripts/generate-sparkle-appcast.sh dist/release dist/sparkle-feed
252-
env:
253-
SPARKLE_RELEASE_BASE_URL: https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}
254-
SPARKLE_FULL_RELEASE_NOTES_URL: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}
255-
SPARKLE_PRODUCT_URL: https://github.com/${{ github.repository }}
256271
257272
- name: Publish Sparkle appcast branch
258273
shell: bash
@@ -275,8 +290,9 @@ jobs:
275290
(
276291
cd "${PUBLISH_DIR}"
277292
find . -mindepth 1 -maxdepth 1 ! -name .git -exec rm -rf {} +
278-
cp "${GITHUB_WORKSPACE}/dist/sparkle-feed/appcast.xml" ./appcast.xml
279-
git add appcast.xml
293+
cp "${GITHUB_WORKSPACE}/dist/sparkle-feed/appcast-arm64.xml" ./appcast-arm64.xml
294+
cp "${GITHUB_WORKSPACE}/dist/sparkle-feed/appcast-amd64.xml" ./appcast-amd64.xml
295+
git add appcast-arm64.xml appcast-amd64.xml
280296
if git diff --cached --quiet; then
281297
echo "Sparkle appcast unchanged; skipping commit."
282298
exit 0

docs-linhay/memory/2026-04-27.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
- Sparkle 接入推进(二):`internal/sparkle` 已改为动态加载 `Sparkle.framework` 的 darwin bridge,`wailsapp` 与设置页已能识别原生更新 UI 模式;当前 macOS 更新入口可切到 Sparkle 实验路径,但还缺 appcast 与真实升级回归。
9292
- Sparkle 接入推进(三):新增 `scripts/generate-sparkle-appcast.sh` 与对应测试,release workflow 现在可在 `SPARKLE_ENABLE=1` 时用 Sparkle 官方 `generate_appcast` 基于 notarized `.dmg` 生成签名后的 `appcast.xml`,并推送到 `sparkle-appcast` 分支供 `raw.githubusercontent.com` 托管稳定 feed。
9393
- Sparkle 正式 release 首次回归(`v0.1.7`)失败点已定位:仅 `macOS amd64``Embed Sparkle framework` 阶段拿到损坏的 Sparkle zip(约 55 KB HTML/错误页),不是 framework 集成本身失败;已把 `scripts/prepare-sparkle-framework.sh` 改成 `curl --fail --retry --retry-all-errors` 并在下载后执行 `unzip -tq` 校验,不合法则重试。
94+
- Sparkle 正式 release 第二次回归(`v0.1.8`)失败点已定位:`Publish Sparkle appcast` 不能把 `arm64``amd64` 两个同版本 DMG 放进同一个 appcast,Sparkle 会判定为 duplicate updates;发布链已改成分架构 feed,分别生成 `appcast-arm64.xml``appcast-amd64.xml`,构建时按目标架构写入对应 `SUFeedURL`
9495

9596
## Wails Window Drag Region
9697
- 当前窗口拖不动的根因已确认:`main.go` 启用了 `mac.TitleBarHiddenInset()`,但前端此前没有任何 `--wails-draggable` 区域,导致 macOS 将整个壳层视为普通 Web 内容。

0 commit comments

Comments
 (0)