Release 1.0.7: Linux AppImage (x64/arm64) CI, merge update feed, docs
Release / release (push) Failing after 7m3s

- electron-builder linux + qemu cross arm64 on ubuntu-22.04 job
- sync-update-feed: merge copy, ARTIFACT_LINUX, .appimage
- GITEA_AUTO_UPDATE + MANUAL_MAC_UPDATE_UPLOAD

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-05-12 10:49:57 +08:00
parent 2037144a5c
commit 8bc2e5bd49
7 changed files with 274 additions and 34 deletions
+43 -3
View File
@@ -2,7 +2,7 @@
#
# Метки runs-on = labels твоих act_runner (Админка Gitea → Действия → Раннеры).
# Не используем windows-latest/macos-latest — это только GitHub-hosted.
# По умолчанию: одна Linux-сборка Win+NSIS (Wine). macOS — когда будет раннер (см. комментарий в build-macos).
# По умолчанию: один job на ubuntu-22.04 — Win (Wine+NSIS), Linux AppImage (x64+arm64), sync в updates без затирания других ОС.
#
# Один job без actions/upload-artifact: официальный upload-artifact@v4 с GitHub на Gitea
# падает (GHESNotSupportedError). Сборка и sync-update-feed идут в одном окружении.
@@ -67,6 +67,47 @@ jobs:
- run: npm ci
- run: npm run build
# Linux AppImage (x64 + arm64) до подмешивания win32-sharp в node_modules.
- name: Зависимости Linux AppImage и кросс-сборка arm64 на amd64
shell: bash
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
qemu-user-static \
binfmt-support \
desktop-file-utils \
squashfs-tools
- name: electron-builder (linux AppImage x64, arm64)
shell: bash
env:
DND_UPDATE_FEED_URL: ${{ secrets.DND_UPDATE_FEED_URL }}
run: |
set -euo pipefail
if [[ -z "${DND_UPDATE_FEED_URL:-}" ]]; then
echo "Secret DND_UPDATE_FEED_URL is not set (URL со слэшем в конце)" >&2
exit 1
fi
npx electron-builder --linux AppImage --x64 --arm64 --publish never \
--config.publish.provider=generic \
--config.publish.url="${DND_UPDATE_FEED_URL}"
- name: Каталог артефактов для feed (_linux)
shell: bash
run: |
mkdir -p _linux
shopt -s nullglob || true
for f in release/*; do
[[ -f "$f" ]] || continue
base=$(basename "$f")
case "$base" in
latest-linux.yml|*.yaml|*.AppImage|*.appimage|*.blockmap) cp -v "$f" _linux/ ;;
esac
done
ls -la _linux
# Не используем `npm install`: на Linux npm падает с EBADPLATFORM для win32-пакета.
- name: sharp (@img/sharp-win32-x64) для Windows-артефакта при сборке на Linux
shell: bash
@@ -80,8 +121,6 @@ jobs:
test -f node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64.node
rm -rf "$tmp"
- run: npm run build
- name: electron-builder (win)
shell: bash
env:
@@ -120,6 +159,7 @@ jobs:
DND_UPDATES_PUSH_TOKEN: ${{ secrets.DND_UPDATES_PUSH_TOKEN }}
ARTIFACT_WIN: ${{ github.workspace }}/_win
ARTIFACT_MAC: ${{ github.workspace }}/_mac
ARTIFACT_LINUX: ${{ github.workspace }}/_linux
GIT_COMMIT_TAG: ${{ github.ref_name }}
run: node scripts/sync-update-feed.mjs