Skip redundant Docker image builds

This commit is contained in:
Codex Bot
2025-12-14 08:09:18 +01:00
parent eb4cf5ead8
commit 0fc5da9fe0
2 changed files with 91 additions and 27 deletions

View File

@@ -35,7 +35,7 @@ This project is for those who prefer containerized solutions. It's based on the
--build-arg SOURCE_REPO=https://git.wylab.me/wylab/wylab-station-14.git \
--build-arg SOURCE_REF=master \
--build-arg TARGET_PLATFORM=linux-x64 \
-t wylab-ss14-server .
-t git.wylab.me/wylab/WS14-Docker-Linux-Server:local .
```
- `SOURCE_REPO` Git URL of the content repo to compile (defaults to the wylab fork).
@@ -54,7 +54,7 @@ docker run -d \
-p 5000:5000/udp \
-v /path/on/host:/ss14 \
--name wylab-ss14 \
wylab-ss14-server
git.wylab.me/wylab/WS14-Docker-Linux-Server:latest
```
On first start the container copies `/ss14-default` into your mounted volume (if empty) so you can edit configs or upload new builds persistently.
@@ -66,8 +66,7 @@ version: '3.9'
services:
ss14-server:
image: wylab-ss14-server
build: .
image: git.wylab.me/wylab/WS14-Docker-Linux-Server:latest
ports:
- "1212:1212/tcp"
- "1212:1212/udp"
@@ -78,4 +77,37 @@ services:
restart: unless-stopped
```
### CI/CD
Two workflows keep this image up to date:
1. **`wylab-station-14/.github/workflows/publish.yml`**
- Triggered on pushes to `master`, manual dispatch, or nightly cron.
- Checks `https://cdn.wylab.me/fork/wylab/manifest` first; if the current commit already exists on the CDN it exits early.
- Uses `actions/cache` to persist `~/.nuget/packages` and `RobustToolbox/bin`, so repeated builds reuse restored packages/engine binaries when the inputs havent changed.
- Otherwise builds the server/client packages via `Content.Packaging`, uploads them via `Tools/publish_multi_request.py`, and fires a `repository_dispatch` event (`event_type: ss14-package-ready`) to this repo.
Required secrets in the wylab-station-14 repo:
`PUBLISH_TOKEN`, `DOCKER_TRIGGER_TOKEN`, and (if used) `SECRETS_PRIVATE_KEY`.
To send the dispatch, add `DOCKER_TRIGGER_TOKEN` (a PAT with repo access).
2. **`WS14-Docker-Linux-Server/.github/workflows/main.yml`**
- Triggered on pushes here, manual dispatch, or the `ss14-package-ready` event.
- Resolves the target wylab commit (uses the payload commit if provided).
- Logs into `git.wylab.me` and runs `docker manifest inspect` before building; if an image tagged with that commit already exists it skips the build.
- Otherwise builds the Docker image with `SOURCE_REF=<commit>` and pushes:
- `git.wylab.me/wylab/WS14-Docker-Linux-Server:latest`
- `git.wylab.me/wylab/WS14-Docker-Linux-Server:<docker repo commit>`
- `git.wylab.me/wylab/WS14-Docker-Linux-Server:<wylab commit>`
Required secrets here: `REGISTRY_USERNAME` / `REGISTRY_PASSWORD` (credentials for `git.wylab.me`).
After the build finishes, Unraid (or any host) can pull:
```
git.wylab.me/wylab/WS14-Docker-Linux-Server:latest
```
Use that string in Unraids “Repository” field and map `/ss14` to persistent storage.
---