- commit
- dd011455840932ac1286821991af396fd6031a82
- parent
- 185333ec6cb07c8e0e4d988cfd8b42c86ac62962
- author
- dami <gazey55@gmail.com>
| A | .woodpecker/ | 55 | ++++++++++++++++++++++++++++++ |
| A | scripts/ | 9 | +++++ |
@@ -0,0 +1,55 @@
1+# The nightly: generate tomorrow's field on slate and push it to the2+# hosted daily (https://mosaic-daily.fly.dev). Runs from the `nightly`3+# cron (05:00 UTC, before the 00:00 UTC rollover with a day of margin)4+# or by hand (manual event). The app machine on Fly generates nothing but5+# an emergency field; this pipeline is the field's real source.6+labels:7+ platform: linux/amd648+9+when:10+ - event: cron11+ cron: nightly12+ - event: manual13+14+steps:15+ - name: build-engine16+ image: golang:1.2717+ commands:18+ - cd engine19+ - go version20+ - CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/mosaic-engine .21+ - ./bin/mosaic-engine version22+ environment:23+ GOMODCACHE: /var/lib/mosaic-nightly/go-mod24+ GOCACHE: /var/lib/mosaic-nightly/go-build25+ GOFLAGS: "-mod=mod"26+ volumes:27+ - /var/lib/mosaic-nightly:/var/lib/mosaic-nightly28+29+ - name: push-tomorrow30+ image: denoland/deno:2.9.531+ directory: site32+ commands:33+ - export MOSAIC_ENGINE="$CI_WORKSPACE/engine/bin/mosaic-engine"34+ - "$MOSAIC_ENGINE" version35+ - export JOBS=$(nproc)36+ - echo "jobs $JOBS"37+ - deno task push-day --tomorrow --host https://mosaic-daily.fly.dev --rings all --jobs "$JOBS" --band 2438+ environment:39+ DENO_NO_UPDATE_CHECK: "1"40+ DENO_DIR: /var/lib/mosaic-nightly/deno-cache41+ MOSAIC_DATA: /var/lib/mosaic-nightly/data/42+ MOSAIC_GOMEMLIMIT: 512MiB43+ MOSAIC_PUSH_TOKEN:44+ from_secret: mosaic_push_token45+ volumes:46+ - /var/lib/mosaic-nightly:/var/lib/mosaic-nightly47+48+ - name: prune-cache-after-14-days49+ image: alpine:3.2250+ commands:51+ - find /var/lib/mosaic-nightly/data/cache -mindepth 1 -mtime +14 -delete 2>/dev/null || true52+ volumes:53+ - /var/lib/mosaic-nightly:/var/lib/mosaic-nightly54+ when:55+ - status: [success, failure]@@ -0,0 +1,9 @@
1+2+# Fails when anything that must stay private is tracked: game data,3+# tokens, private generator output, deploy secrets.4+set -e5+bad=$(git ls-files | grep -iE '(^|/)(data/|\.env|push-token|.*secret.*|.*token.*|[0-9a-f]{64}\.json)' | grep -vE '^engine/testdata/' || true)6+if [ -n "$bad" ]; then7+ echo "tracked files that must not be:"; echo "$bad"; exit 18+fi9+echo "tracked files: clean"