Реліз у мод-репі → джар автоматично на Pterodactyl-сервері.
Деплой чіпляється до події «GitHub Release опубліковано» (як саме реп робить релізи — байдуже) і деплоїть асет релізу байт-у-байт, без перезбирання: аплоад нового джара → видалення старого джара цього мода → рестарт сервера → очікування чистого буту в лозі (~3 хв). Немає чистого буту — джоба червона, сервер лишається як є до ручного втручання.
Дизайн і ухвалені рішення: docs/design.md.
1. Додай у свій реп файл .github/workflows/deploy.yml:
name: Deploy
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: "Тег релізу (порожньо = останній)"
required: false
jobs:
deploy:
uses: borukva/mc-deploy/.github/workflows/deploy.yml@v1
with:
targets: |
мій-мод-*.jar -> аліас-сервера
tag: ${{ inputs.tag || github.event.release.tag_name }}
secrets:
PTERO_URL: ${{ secrets.PTERO_URL }}
PTERO_TOKEN: ${{ secrets.PTERO_TOKEN }}Опціональний інпут boot_ok — маркер чистого буту в лозі (дефолт Done (;
напр. abyss ставить Abyss initialized).
2. Якщо твого сервера ще немає в servers.json — додай
рядок "аліас": "<короткий id з URL панелі>" PR-ом.
Секрети приїдуть самі: cron щодня, або одразу — Actions → Sync secrets →
Run workflow у цьому репі. Наявність deploy.yml у репі і є фактом
«підключений» — жодного реєстру.
Якщо реп ще не робить релізів — скопіюй release.yml з
mindbattle (тег v* → збірка →
реліз із джаром).
- Рядок =
<глоб асета> -> <аліас сервера>. Коментарі після#. - Перший глоб, що зматчив, забирає асет → специфічніше пиши вище:
mindbattle-pvp-*.jarнадmindbattle-*.jar. - Кожне правило має зматчити рівно один асет релізу, інакше джоба падає.
-sources.jar/-javadoc.jar/-dev.jarігноруються.- Видаляються з сервера лише старі джари, які матчаться правилами твого репу, — джари інших модів на тому ж сервері недоторкані.
Старі релізи зберігають джари: у своєму репі Actions → Deploy → Run workflow → впиши тег попереднього релізу.
Канон — Actions-секрети цього репу: PTERO_URL, PTERO_TOKEN (панель),
REPO_ADMIN_TOKEN (PAT для роздачі). Ротація = оновити тут → Run workflow
«Sync secrets». Логи деплою публічні, тому deploy.py свідомо не друкує
серверну консоль — лише імена джарів і вердикт буту.
Кімнати, моделі й конфіги abyss — то abyss/tools/remote.py
(push-rooms/push-models): там source of truth — прод-сервер, не git.