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

5.3 KiB
Raw Permalink Blame History

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 автоматически:

  1. Собирает Docker образ (Dockerfile)
  2. Пушит образ в локальный registry (<SERVER>:5000/barotrauma-server:latest)
  3. По SSH подключается к серверу
  4. Останавливает старый контейнер
  5. Запускает новый контейнер с пробросом порта 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           # Локальный тест