Compare commits

...
12 Commits
Author SHA1 Message Date
cacto a9e4828dd9 Слияние feature/deploy-cp-instead-of-rsync 2026-07-26 23:25:30 +05:00
cacto ddab8de27b Заменить rsync на cp/rm в деплое — rsync нет в образе раннера 2026-07-26 23:25:30 +05:00
cacto b582bb7cf4 Слияние feature/deploy-internal-clone 2026-07-26 23:18:34 +05:00
cacto 1bc94980f8 Клонировать по внутреннему адресу Gitea вместо actions/checkout
actions/checkout тянет свой код с github.com и берёт URL из внутреннего
server_url — оба варианта требуют сети, которой у джоб-контейнера
раннера нет вообще (ни наружу, ни туда). Ручной git clone по
http://gitea:3000/... остаётся внутри docker-сети раннера/Gitea.
2026-07-26 23:18:34 +05:00
cacto 684277ebff Слияние feature/revert-checkout-action 2026-07-26 23:02:51 +05:00
cacto 28f8deff5f Вернуть actions/checkout@v4 — сеть раннера починена 2026-07-26 23:02:51 +05:00
cacto 3fe09de3c9 Слияние feature/fix-checkout-dns 2026-07-26 22:30:46 +05:00
cacto 6b3ba11faf Обойти DNS-проблему в деплое: клонировать по публичному URL
actions/checkout использует внутренний server_url Gitea (http://gitea:3000/...),
который джоб-контейнер раннера не резолвит (не в docker-сети Gitea).
Явный git clone по https://git.cactoz.su/... не зависит от этой внутренней сети.
2026-07-26 22:30:46 +05:00
cacto 85b2f006ae Слияние feature/fix-caddy-network 2026-07-26 22:03:25 +05:00
cacto 971ebdc11f Исправить имя внешней сети Caddy: caddy_net -> proxy 2026-07-26 22:03:25 +05:00
cacto c85300c751 Слияние feature/ci-deploy: автодеплой на cacto-homelab 2026-07-26 21:37:27 +05:00
cacto fb4ccc351f Автодеплой через Gitea Actions на cacto-homelab
.gitea/workflows/deploy.yml: пуш в main -> build+up прямо на runner'е
(docker.sock смонтирован, registry и SSH не нужны).
docker-compose.prod.yml: внешняя сеть caddy_net, container_name cactoz-nginx
для reverse_proxy из Caddy.
gameserver/Dockerfile: зависимости (uSockets/json) вынесены в отдельный
кэшируемый слой — пересборка после правки src/ упала с ~6.5 мин до ~9 сек.
2026-07-26 21:37:21 +05:00
3 changed files with 65 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# actions/checkout скачивает свой код с github.com и берёт URL из
# внутреннего server_url Gitea — оба варианта требуют сети, которой
# у джоб-контейнера раннера нет. Клонируем напрямую по внутреннему
# адресу Gitea в docker-сети раннера.
- name: Checkout
run: git clone --depth=1 --branch main http://gitea:3000/cacto/cactoz.su.git repo
# Runner уже на cacto-homelab и имеет доступ к docker.sock хоста,
# поэтому образ собирается прямо на месте — без registry и без SSH.
- name: Sync to deploy directory
run: |
rm -rf /data/docker/compose/cactoz
mkdir -p /data/docker/compose/cactoz
cp -a repo/. /data/docker/compose/cactoz/
rm -rf /data/docker/compose/cactoz/.git
- name: Build and restart
working-directory: /data/docker/compose/cactoz
run: |
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d
docker image prune -f
+24
View File
@@ -0,0 +1,24 @@
services:
nginx:
container_name: cactoz-nginx
build:
context: .
dockerfile: nginx/Dockerfile
networks:
- internal
- proxy
depends_on:
- gameserver
restart: unless-stopped
gameserver:
build: ./gameserver
networks:
- internal
restart: unless-stopped
networks:
internal:
# уже создана Caddy-стеком; сюда только подключаемся
proxy:
external: true
+9 -1
View File
@@ -3,9 +3,17 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git ca-certificates zlib1g-dev \ build-essential cmake git ca-certificates zlib1g-dev \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
WORKDIR /app WORKDIR /app
# Кэшируемый слой: конфигурация + сборка зависимостей (uSockets, json).
# Заглушки вместо src/, чтобы cmake configure не падал на несуществующих
# исходниках — они не компилируются, т.к. просим собрать только usockets.
COPY CMakeLists.txt ./ COPY CMakeLists.txt ./
RUN mkdir src && touch src/main.cpp src/Lobby.cpp src/Lobby.hpp
RUN cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build --target usockets -j"$(nproc)"
# Реальный код поверх уже собранных зависимостей — пересобирается за секунды.
COPY src ./src COPY src ./src
RUN cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j"$(nproc)" RUN cmake --build build --target gameserver -j"$(nproc)"
FROM debian:bookworm-slim FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends zlib1g \ RUN apt-get update && apt-get install -y --no-install-recommends zlib1g \