ci: add build and distribution pipeline with goreleaser and Gitea Actions

- .goreleaser.yaml: cross-compile linux/windows, Docker image, Gitea releases
- .gitea/workflows/ci.yml: verify build on every push/PR
- .gitea/workflows/release.yml: goreleaser + Docker on tag push
- Dockerfile: switch to debian:bookworm-slim, install steamcmd from Valve
- Dockerfile.goreleaser: minimal image used by goreleaser dockers
- docker-compose.yml: parameterize SERVERS_DIR via env var
This commit is contained in:
MrFastwind
2026-07-06 17:35:23 +02:00
parent cc7cb0bc56
commit d94593743f
7 changed files with 167 additions and 12 deletions

View File

@@ -1,4 +1,4 @@
FROM golang:1.25-alpine AS backend
FROM golang:1.25-bookworm AS backend
WORKDIR /src
COPY backend/go.mod backend/go.sum ./
RUN go mod download
@@ -12,9 +12,19 @@ RUN npm ci
COPY frontend/ .
RUN npm run build
FROM alpine:3.21
RUN apk add --no-cache ca-certificates tzdata
RUN apk add --no-cache steamcmd libstdc++ libgcc || true
FROM debian:bookworm-slim
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
tzdata \
lib32gcc-s1 \
wget \
xz-utils && \
mkdir -p /steamcmd && \
wget -qO- https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | \
tar xvz -C /steamcmd && \
ln -s /steamcmd/steamcmd.sh /usr/local/bin/steamcmd && \
rm -rf /var/lib/apt/lists/*
COPY --from=backend /server /usr/local/bin/arma3-web-server
COPY --from=frontend /src/dist /usr/share/arma3-web-server/frontend
@@ -22,12 +32,6 @@ COPY --from=frontend /src/dist /usr/share/arma3-web-server/frontend
EXPOSE 8080
VOLUME ["/data", "/servers"]
# Expected mount structure under /servers:
# /servers/ ← SERVERFILE_DIR (arma3server_x64 binary, userconfig/)
# /servers/steamapps/workshop/content/107410/ ← workshop mods (downloaded via SteamCMD)
# /servers/mods/ ← MODS_DIR (@modname mod folders)
# /servers/cfg/ ← CFG_DIR (.cfg files)
# /servers/profiles/ ← PROFILES_DIR (logs, .rpt, server profile)
ENV DATA_DIR=/data
ENV SERVERFILE_DIR=/servers
ENV MODS_DIR=/servers/mods