5.3 KiB
5.3 KiB
CI/CD для Barotrauma Dedicated Server
Архитектура
ПК (разработка):
Barotrauma + моды → autogen_config.py → git commit → push в release
Gitea Actions (CI):
Триггер: push в release → docker build → push в локальный registry → SSH деплой
Сервер Ubuntu 24.04:
Docker → docker run barotrauma-server → порт 27015 UDP/TCP
1. Подготовка сервера (Ubuntu 24.04)
1.1. Установка Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Выйти и зайти заново (или newgrp docker)
1.2. Запуск локального Docker registry
docker run -d --restart always -p 5000:5000 --name registry registry:2
1.3. Настройка insecure registry
Создать/редактировать /etc/docker/daemon.json:
{
"insecure-registries": ["<IP_СЕРВЕРА>:5000"]
}
Перезапустить Docker:
sudo systemctl restart docker
1.4. Добавление SSH ключа для CI
Сгенерировать ключ (если нет):
ssh-keygen -t ed25519 -f ~/.ssh/ci_deploy -N ""
cat ~/.ssh/ci_deploy.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Приватный ключ (~/.ssh/ci_deploy) понадобится в Gitea Secrets.
2. Настройка Gitea Actions
2.1. Включить Actions в Gitea
Site Administration → Actions → Enable Actions
Убедиться, что есть Gitea Runner. Если нет — установить:
# На сервере или отдельной машине:
sudo wget -O /usr/local/bin/act_runner https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-amd64
sudo chmod +x /usr/local/bin/act_runner
act_runner register --instance https://<ВАШ_GITEA> --token <TOKEN>
act_runner daemon
2.2. Добавить Secrets в Gitea
В репозитории: Settings → Secrets → Add secret
| Secret | Значение |
|---|---|
REGISTRY_ADDR |
<IP_СЕРВЕРА>:5000 (например 192.168.1.100:5000) |
SERVER_HOST |
IP-адрес сервера |
SERVER_USER |
Пользователь для SSH (обычно root или ваш user) |
SSH_KEY |
Приватный ключ из ~/.ssh/ci_deploy |
3. Рабочий процесс
3.1. На ПК: подготовка сборки
# 1. Скопировать моды из Steam Workshop в LocalMods/:
# Каждый мод — отдельная папка, внутри filelist.xml
# Пример: LocalMods/MyMod/filelist.xml
# 2. Сгенерировать конфиг:
python3 scripts/autogen_config.py
# → Будет создан config_player.xml с путями ко всем модам
# 3. (Опционально) Проверить локально:
# docker compose up --build
# 4. Закоммитить и запушить:
git add -A
git commit -m "feat: update mods"
git push origin release
3.2. CI: автоматический деплой
После push в release Gitea Actions автоматически:
- Собирает Docker образ (
Dockerfile) - Пушит образ в локальный registry (
<SERVER>:5000/barotrauma-server:latest) - По SSH подключается к серверу
- Останавливает старый контейнер
- Запускает новый контейнер с пробросом порта
27015
3.3. Проверка сервера
# На сервере:
docker logs -f barotrauma
# Или через Steam, подключившись к <IP_СЕРВЕРА>:27015
4. Структура файлов
BarotraumaMod/
├── scripts/
│ └── autogen_config.py # Скрипт генерации config_player.xml
├── .gitea/workflows/
│ └── deploy.yml # Gitea Actions workflow
├── Dockerfile # Сборка Docker образа
├── docker-compose.yml # Локальное тестирование
├── config_player.xml # Конфиг (генерируется autogen_config.py)
├── LocalMods/ # Моды (каждый мод в своей папке)
│ ├── LuaCsForBarotrauma/
│ │ └── filelist.xml
│ ├── Mod1/
│ │ └── filelist.xml
│ └── ...
└── ... # Остальные файлы сервера
5. Порты
| Порт | Протокол | Назначение |
|---|---|---|
| 27015 | UDP | Основной игровой трафик Barotrauma |
| 27015 | TCP | Steam-подключения |
| 5000 | TCP | Локальный Docker registry |
6. Полезные команды
# На сервере:
docker logs barotrauma # Логи сервера
docker restart barotrauma # Перезапуск
docker stop barotrauma && docker rm barotrauma # Удаление
docker pull <IP>:5000/barotrauma-server:latest # Ручное обновление
# На ПК:
python3 scripts/autogen_config.py # Обновить config_player.xml
docker compose up --build # Локальный тест