Compare commits
17
Commits
5649961e81
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b48c01a93 | ||
|
|
a9e4828dd9 | ||
|
|
ddab8de27b | ||
|
|
d626a66ff7 | ||
|
|
b582bb7cf4 | ||
|
|
1bc94980f8 | ||
|
|
128c5cf16e | ||
|
|
684277ebff | ||
|
|
28f8deff5f | ||
|
|
a1c7cfdc9b | ||
|
|
3fe09de3c9 | ||
|
|
6b3ba11faf | ||
|
|
b5566ec73e | ||
|
|
85b2f006ae | ||
|
|
971ebdc11f | ||
|
|
c85300c751 | ||
|
|
fb4ccc351f |
@@ -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
|
||||
@@ -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
|
||||
@@ -3,9 +3,17 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential cmake git ca-certificates zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app
|
||||
|
||||
# Кэшируемый слой: конфигурация + сборка зависимостей (uSockets, json).
|
||||
# Заглушки вместо src/, чтобы cmake configure не падал на несуществующих
|
||||
# исходниках — они не компилируются, т.к. просим собрать только usockets.
|
||||
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
|
||||
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
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends zlib1g \
|
||||
|
||||
Reference in New Issue
Block a user