From 600b8f83217f5d11eb3219b303d1008f875fcadb Mon Sep 17 00:00:00 2001 From: Ivan Fontosh Date: Mon, 11 May 2026 22:24:02 +0800 Subject: [PATCH] ci: Gitea release on ubuntu runner (Wine for Win), drop github-only labels Co-authored-by: Cursor --- .gitea/workflows/release.yml | 99 +++++++++++------------------------- docs/GITEA_AUTO_UPDATE.md | 11 ++++ 2 files changed, 41 insertions(+), 69 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index a294240..3f15056 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -1,5 +1,10 @@ -# Сборка установщиков по тегу v* и выкладка файлов обновления в публичный репозиторий (ветка `updates`). -# Secrets (имена без GITEA_* — зарезервировано на сервере): DND_UPDATE_FEED_URL, DND_UPDATES_SERVER, UPDATES_REPO, DND_UPDATES_PUSH_TOKEN — см. docs/GITEA_AUTO_UPDATE.md +# Сборка по тегу 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 @@ -12,8 +17,9 @@ env: CSC_IDENTITY_AUTO_DISCOVERY: 'false' jobs: + # Сборка Windows-установщика на Linux (типичный self-hosted Gitea без облачных раннеров). build-windows: - runs-on: windows-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -22,10 +28,16 @@ jobs: node-version: '22' 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 run: | - TAG="${GITHUB_REF_NAME:-}" + TAG="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-}}" VERSION="${TAG#v}" npm version "$VERSION" --allow-same-version --no-git-tag-version @@ -33,8 +45,6 @@ jobs: - run: npm run build - - run: node scripts/release-win-prep.mjs - - name: electron-builder (win) shell: bash env: @@ -42,14 +52,14 @@ jobs: run: | set -euo pipefail 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 fi npx electron-builder --win --publish never \ --config.publish.provider=generic \ --config.publish.url="${DND_UPDATE_FEED_URL}" - - name: Stage win artifacts + - name: Собрать артефакты win shell: bash run: | mkdir -p _artifact_win @@ -68,63 +78,16 @@ jobs: name: eb-win path: _artifact_win/ - build-macos: - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - 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/ + # Когда появится 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-latest - needs: [build-windows, build-macos] + runs-on: ubuntu-22.04 + needs: [build-windows] steps: - uses: actions/checkout@v4 @@ -133,16 +96,14 @@ jobs: name: eb-win path: _win - - uses: actions/download-artifact@v4 - with: - name: eb-mac - path: _mac + - name: Пустой каталог mac (пока нет сборки mac в CI) + run: mkdir -p _mac - uses: actions/setup-node@v4 with: node-version: '22' - - name: Push to public updates repo + - name: Push в публичный репозиторий updates env: DND_UPDATES_SERVER: ${{ secrets.DND_UPDATES_SERVER }} UPDATES_REPO: ${{ secrets.UPDATES_REPO }} diff --git a/docs/GITEA_AUTO_UPDATE.md b/docs/GITEA_AUTO_UPDATE.md index 5fd4e56..17aa805 100644 --- a/docs/GITEA_AUTO_UPDATE.md +++ b/docs/GITEA_AUTO_UPDATE.md @@ -91,6 +91,17 @@ git push origin main Бегунки 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 — выпуск версии