Files
DndGamePlayer/.gitea/workflows/release.yml
T
Ivan Fontosh 93dad8a80d
Release / build-windows (push) Failing after 1m23s
Release / publish-update-feed (push) Has been skipped
ci: win build deps without i386 (nsis + wine64) for Debian runners
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 22:47:17 +08:00

120 lines
4.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Сборка по тегу v* и выкладка в публичный репо (ветка updates).
#
# Метки runs-on = labels твоих act_runner (Админка Gitea → Действия → Раннеры).
# Не используем windows-latest/macos-latest — это только GitHub-hosted.
# По умолчанию: одна Linux-сборка Win+NSIS (Wine). macOS — когда будет раннер (см. комментарий в build-macos).
#
# Secrets: DND_UPDATE_FEED_URL, DND_UPDATES_SERVER, UPDATES_REPO, DND_UPDATES_PUSH_TOKEN — docs/GITEA_AUTO_UPDATE.md
name: Release
on:
push:
tags:
- 'v*'
env:
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
jobs:
# Сборка Windows-установщика на Linux (типичный self-hosted Gitea без облачных раннеров).
build-windows:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
# Не включаем i386 / wine32: на Debian с репами только amd64 (nginx, sury, …)
# apt ломается на цепочке libgphoto2/libgd:i386. NSIS — нативный пакет `nsis`;
# electron-builder подхватывает makensis; wine64 — для win-утилит (rcedit и т.п.).
- name: Зависимости Win-сборки на Linux (amd64, без multiarch i386)
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates \
nsis \
wine64
- name: Версия из тега
shell: bash
run: |
TAG="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-}}"
VERSION="${TAG#v}"
npm version "$VERSION" --allow-same-version --no-git-tag-version
- run: npm ci
- run: npm run build
- name: electron-builder (win)
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 --win --publish never \
--config.publish.provider=generic \
--config.publish.url="${DND_UPDATE_FEED_URL}"
- name: Собрать артефакты win
shell: bash
run: |
mkdir -p _artifact_win
shopt -s nullglob || true
for f in release/*; do
[[ -f "$f" ]] || continue
base=$(basename "$f")
case "$base" in
*.yml|*.yaml|*.exe|*.blockmap|*.zip) cp -v "$f" _artifact_win/ ;;
esac
done
ls -la _artifact_win
- uses: actions/upload-artifact@v4
with:
name: eb-win
path: _artifact_win/
# Когда появится macOS-раннер: раскомментируй job и выставь runs-on под метку раннера;
# в publish-update-feed добавь needs: [build-windows, build-macos] и download eb-mac.
#
# build-macos:
# runs-on: macos-14
# steps: ...
publish-update-feed:
runs-on: ubuntu-22.04
needs: [build-windows]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: eb-win
path: _win
- name: Пустой каталог mac (пока нет сборки mac в CI)
run: mkdir -p _mac
- uses: actions/setup-node@v4
with:
node-version: '22'
- name: Push в публичный репозиторий updates
env:
DND_UPDATES_SERVER: ${{ secrets.DND_UPDATES_SERVER }}
UPDATES_REPO: ${{ secrets.UPDATES_REPO }}
DND_UPDATES_PUSH_TOKEN: ${{ secrets.DND_UPDATES_PUSH_TOKEN }}
ARTIFACT_WIN: ${{ github.workspace }}/_win
ARTIFACT_MAC: ${{ github.workspace }}/_mac
GIT_COMMIT_TAG: ${{ github.ref_name }}
run: node scripts/sync-update-feed.mjs