115 lines
3.7 KiB
YAML
115 lines
3.7 KiB
YAML
# Сборка по тегу 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'
|
|
|
|
- name: Wine (для NSIS под Linux)
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
sudo apt-get install -y wine64 wine32 mono-devel ca-certificates
|
|
|
|
- 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
|