Files
BarotraumaModServer/docs/CI_CD_GUIDE.md
SlavaVlad 1b55091908
Some checks failed
Build & Deploy / deploy (push) Has been cancelled
init update
2026-06-08 17:37:33 +03:00

168 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```bash
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Выйти и зайти заново (или newgrp docker)
```
### 1.2. Запуск локального Docker registry
```bash
docker run -d --restart always -p 5000:5000 --name registry registry:2
```
### 1.3. Настройка insecure registry
Создать/редактировать `/etc/docker/daemon.json`:
```json
{
"insecure-registries": ["<IP_СЕРВЕРА>:5000"]
}
```
Перезапустить Docker:
```bash
sudo systemctl restart docker
```
### 1.4. Добавление SSH ключа для CI
Сгенерировать ключ (если нет):
```bash
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. Если нет — установить:
```bash
# На сервере или отдельной машине:
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. На ПК: подготовка сборки
```bash
# 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 автоматически:
1. Собирает Docker образ (`Dockerfile`)
2. Пушит образ в локальный registry (`<SERVER>:5000/barotrauma-server:latest`)
3. По SSH подключается к серверу
4. Останавливает старый контейнер
5. Запускает новый контейнер с пробросом порта `27015`
### 3.3. Проверка сервера
```bash
# На сервере:
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. Полезные команды
```bash
# На сервере:
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 # Локальный тест
```