ci: Gitea release on ubuntu runner (Wine for Win), drop github-only labels
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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 }}
|
||||||
|
|||||||
@@ -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 — выпуск версии
|
||||||
|
|||||||
Reference in New Issue
Block a user