ci: Gitea release on ubuntu runner (Wine for Win), drop github-only labels
Release / build-windows (push) Failing after 54s
Release / publish-update-feed (push) Has been skipped

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-05-11 22:24:02 +08:00
parent 30b57d842a
commit 600b8f8321
2 changed files with 41 additions and 69 deletions
+30 -69
View File
@@ -1,5 +1,10 @@
# Сборка установщиков по тегу v* и выкладка файлов обновления в публичный репозиторий (ветка `updates`). # Сборка по тегу v* и выкладка в публичный репо (ветка updates).
# Secrets (имена без GITEA_* — зарезервировано на сервере): DND_UPDATE_FEED_URL, DND_UPDATES_SERVER, UPDATES_REPO, DND_UPDATES_PUSH_TOKEN — см. docs/GITEA_AUTO_UPDATE.md #
# Метки 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 name: Release
@@ -12,8 +17,9 @@ env:
CSC_IDENTITY_AUTO_DISCOVERY: 'false' CSC_IDENTITY_AUTO_DISCOVERY: 'false'
jobs: jobs:
# Сборка Windows-установщика на Linux (типичный self-hosted Gitea без облачных раннеров).
build-windows: build-windows:
runs-on: windows-latest runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -22,10 +28,16 @@ jobs:
node-version: '22' node-version: '22'
cache: 'npm' cache: 'npm'
- name: Version from tag - 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 shell: bash
run: | run: |
TAG="${GITHUB_REF_NAME:-}" TAG="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-}}"
VERSION="${TAG#v}" VERSION="${TAG#v}"
npm version "$VERSION" --allow-same-version --no-git-tag-version npm version "$VERSION" --allow-same-version --no-git-tag-version
@@ -33,8 +45,6 @@ jobs:
- run: npm run build - run: npm run build
- run: node scripts/release-win-prep.mjs
- name: electron-builder (win) - name: electron-builder (win)
shell: bash shell: bash
env: env:
@@ -42,14 +52,14 @@ jobs:
run: | run: |
set -euo pipefail set -euo pipefail
if [[ -z "${DND_UPDATE_FEED_URL:-}" ]]; then if [[ -z "${DND_UPDATE_FEED_URL:-}" ]]; then
echo "Secret DND_UPDATE_FEED_URL is not set (generic feed base URL, trailing slash)" >&2 echo "Secret DND_UPDATE_FEED_URL is not set (URL со слэшем в конце)" >&2
exit 1 exit 1
fi fi
npx electron-builder --win --publish never \ npx electron-builder --win --publish never \
--config.publish.provider=generic \ --config.publish.provider=generic \
--config.publish.url="${DND_UPDATE_FEED_URL}" --config.publish.url="${DND_UPDATE_FEED_URL}"
- name: Stage win artifacts - name: Собрать артефакты win
shell: bash shell: bash
run: | run: |
mkdir -p _artifact_win mkdir -p _artifact_win
@@ -68,63 +78,16 @@ jobs:
name: eb-win name: eb-win
path: _artifact_win/ path: _artifact_win/
build-macos: # Когда появится macOS-раннер: раскомментируй job и выставь runs-on под метку раннера;
runs-on: macos-latest # в publish-update-feed добавь needs: [build-windows, build-macos] и download eb-mac.
steps: #
- uses: actions/checkout@v4 # build-macos:
# runs-on: macos-14
- uses: actions/setup-node@v4 # steps: ...
with:
node-version: '22'
cache: 'npm'
- name: Version from tag
shell: bash
run: |
TAG="${GITHUB_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 (mac)
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" >&2
exit 1
fi
npx electron-builder --mac --publish never \
--config.publish.provider=generic \
--config.publish.url="${DND_UPDATE_FEED_URL}"
- name: Stage mac artifacts
shell: bash
run: |
mkdir -p _artifact_mac
shopt -s nullglob || true
for f in release/*; do
[[ -f "$f" ]] || continue
base=$(basename "$f")
case "$base" in
*.yml|*.yaml|*.dmg|*.blockmap|*.zip|*.pkg) cp -v "$f" _artifact_mac/ ;;
esac
done
ls -la _artifact_mac
- uses: actions/upload-artifact@v4
with:
name: eb-mac
path: _artifact_mac/
publish-update-feed: publish-update-feed:
runs-on: ubuntu-latest runs-on: ubuntu-22.04
needs: [build-windows, build-macos] needs: [build-windows]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -133,16 +96,14 @@ jobs:
name: eb-win name: eb-win
path: _win path: _win
- uses: actions/download-artifact@v4 - name: Пустой каталог mac (пока нет сборки mac в CI)
with: run: mkdir -p _mac
name: eb-mac
path: _mac
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: '22' node-version: '22'
- name: Push to public updates repo - name: Push в публичный репозиторий updates
env: env:
DND_UPDATES_SERVER: ${{ secrets.DND_UPDATES_SERVER }} DND_UPDATES_SERVER: ${{ secrets.DND_UPDATES_SERVER }}
UPDATES_REPO: ${{ secrets.UPDATES_REPO }} UPDATES_REPO: ${{ secrets.UPDATES_REPO }}
+11
View File
@@ -91,6 +91,17 @@ git push origin main
Бегунки Gitea должны иметь доступ в интернет (для `npm ci`, `actions/checkout` и т.д.) — это настраивает админ сервера. Бегунки Gitea должны иметь доступ в интернет (для `npm ci`, `actions/checkout` и т.д.) — это настраивает админ сервера.
### Раннеры и метки `runs-on`
Сообщение **«No matching online runner with label: windows-latest»** значит: в workflow были метки **как на GitHub**, а у тебя **свой act_runner** с **другими** метками.
- В **Администрирование****Действия****Раннеры** (или в настройках сайта) посмотри, какие **метки (labels)** у онлайн-раннера.
- В файле **`.gitea/workflows/release.yml`** у job’ов поле **`runs-on:`** должно **точно совпадать** с одной из этих меток (например `ubuntu-22.04`, `ubuntu-latest`, `self-hosted`).
Сейчас в workflow по умолчанию стоит **`ubuntu-22.04`**. Если у раннера другая метка — замени в **трёх** местах (`build-windows` и два раза `publish-update-feed`, если дублируется) на свою.
Сборка **Windows (NSIS)** идёт **на Linux** с установкой **Wine** (отдельный Mac-runner не обязателен для Windows). Отдельная job **macOS** в workflow временно отключена: без Mac-раннера она всё равно не стартовала; когда появится раннер с macOS — можно снова добавить job и второй артефакт (см. комментарии в `release.yml`).
--- ---
## Шаг 4 — выпуск версии ## Шаг 4 — выпуск версии