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:
24
Dockerfile
24
Dockerfile
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user