fix(release): adapt pipeline for Forgejo + simplify CI to Python 3.13 #10
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
slaid098/voice_assistant#10
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
GitHub аккаунт удалён. Хост — Forgejo (
git.slaid098.dev). Локальный Windows-раннер зарегистрирован с labelwindows-amd64(см.slaid098/forgejo-infra/windows-runner/workflow-template.yml). Ни одной сборки не было — тегиv1.0.0–v1.3.2существуют, но релизов к ним нет.Текущий
release.ymlнаписан под GitHub Actions и не работает на Forgejo: 7 блокеров. Дополнительно: CI матрица["3.12", "3.13"]усложняет сборку без нужды — оставляем только3.13.Задача
Адаптировать release pipeline для Forgejo + локального Windows-раннера, упростить CI до одной версии Python, обнулить CHANGELOG до v0.1.0.
1.
.github/workflows/release.yml— полная переработкаПо шаблону
forgejo-infra/windows-runner/workflow-template.yml:permissions: contents: write(стр. 7-8) — Forgejo игнорирует, права в Settings репоtest(стр. 11-21) — дублирует ci.yml, замедляет релизbuild:runs-on: windows-latest→runs-on: windows-amd64uses: astral-sh/setup-uv@v3→uses: actions/setup-python@v5сpython-version: '3.12', затемpip install uvshell: powershellна КАЖДОМ step (defaults.run.shell не работает в v13)--collect-all openwakewordи--collect-all onnxruntime(превентивно)--collect-all piper(Piper удалён в PR #9)CHANGELOG.mdв zipsoftprops/action-gh-release@v2на curl к Forgejo API:2.
.github/workflows/ci.yml— упростить матрицуstrategy.matrix.python: ["3.12", "3.13"](стр. 31-33) — одна версия3.13test(стр. 29-40): убрать--python ${{ matrix.python }}изuv sync3.
pyproject.tomlrequires-python = ">=3.12"→requires-python = ">=3.13""Programming Language :: Python :: 3.13"github.com/slaid098/voice_assistant→git.slaid098.dev/slaid098/voice_assistant4.
CHANGELOG.md— обнулить историюПолностью заменить содержимое — начать с чистого v0.1.0:
5. Теги git (после merge, не в PR)
v1.0.0,v1.1.0,v1.1.1,v1.2.2,v1.2.3,v1.2.4,v1.3.0,v1.3.1,v1.3.2(local + remote)v0.1.0на master →git push origin v0.1.0→ trigger release.ymlКонтракты
Runner label
windows-amd64— label изforgejo-infra/windows-runner/workflow-template.ymlwindows-latest, НЕself-hosted, НЕwindowsShell
shell: powershellна КАЖДОМ step (не pwsh — шаблон использует powershell)defaults.run.shellне работает в Forgejo runner v13Python
actions/setup-python@v5сpython-version: '3.12'(шаблон использует 3.12; uv поставит 3.13 для проекта черезrequires-python)Forgejo release API
POST /api/v1/repos/slaid098/voice_assistant/releases— создание релизаPOST /api/v1/repos/slaid098/voice_assistant/releases/{id}/assets?name=voice-assistant.zip— загрузка артефакта$GITHUB_TOKEN(auto-provided в Forgejo runner-контексте, алиас для FORGEJO_TOKEN)PyInstaller флаги
--noconfirm --onefile--name voice-assistant--collect-data voice_assistant(earcons + phrases)--collect-all vosk/--collect-all vosk_tts--collect-all openwakeword(КРИТИЧНО — без этого wake-word не работает)--collect-all onnxruntime(превентивно — shared libraries для piper/vosk/openwakeword)src/voice_assistant/__main__.py(entry point)--windowedНЕ добавлять (консоль оставлена для отладки первой сборки)Структура релизного zip
Инварианты
ci.ymljobs lint/typecheck/complexity (только убрать матрицу в test)--windowedв PyInstaller (консоль оставлена)src/voice_assistant/__main__.py)install_autorun.bat/remove_autorun.batГраничные случаи
--collect-all openwakewordможет не найти data-файлы — fallback:--add-data "path/to/openwakeword/data;openwakeword/data"--collect-all onnxruntimeдобавляет ~50 MB к бинарнику — безопаснее, чем падение в рантайме$GITHUB_TOKEN— проверить, что имеет праваwrite:repo(если нет — релиз не создастся, zip останется в artifacts)Invoke-RestMethodдля Forgejo API — PowerShell-native, не требует curlВлияние на связанные компоненты
release.yml— полная переработка (8 блокеров исправлены)ci.yml— упрощение матрицы (2 версии → 1)pyproject.toml— requires-python, classifiers, URLsCHANGELOG.md— обнуление истории (старые записи удалены)Вне scope
v1.0.0–v1.3.2(git ops после merge)v0.1.0(git ops после merge)--windowed(оставлено на будущее)Критерии приемки
release.yml:runs-on: windows-amd64release.yml:setup-python@v5+pip install uv(неsetup-uv@v3)release.yml:shell: powershellна каждом steprelease.yml: шаг копированияwiki.onnxвdist/models/openwakeword/release.yml:--collect-all openwakewordи--collect-all onnxruntimerelease.yml: Forgejo release через curl/Invoke-RestMethod (не softprops)release.yml:permissions:удалён, jobtestудалёнci.yml: матрица убрана, только Python 3.13pyproject.toml:requires-python = ">=3.13", classifier только 3.13pyproject.toml: URLs →git.slaid098.devCHANGELOG.md: обнулён, начинается с## [0.1.0]uv run ruff check src/ tests/— зелёныйuv run mypy src/— зелёныйuv run pytest— зелёный