Skip to content

Refresh Rumble container runtime lanes - #13

Merged
flemming-n-larsen merged 6 commits into
mainfrom
ch-038-runtime-image-refresh
Sep 10, 2026
Merged

Refresh Rumble container runtime lanes#13
flemming-n-larsen merged 6 commits into
mainfrom
ch-038-runtime-image-refresh

Conversation

@flemming-n-larsen

@flemming-n-larsen flemming-n-larsen commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Move the development image to the LTS-first Java 25, .NET 10, Python 3.14, and Node.js 24 lanes.
  • Keep the Python API and dependencies in an image-owned virtual environment and allow existing net8.0 bots to roll forward to the image .NET SDK.
  • Add monthly official-feed refresh automation that opens a reviewable PR only after the image, hardening checks, and all four sample-bot smoke battles pass.
  • Make the container verifier work with Docker or Podman and update the native preflight/docs accordingly.
  • Run the sample-bot Gradle build from the checked-out Tank Royale source directory so hosted CI resolves the correct Gradle project.
  • Prefetch C# NuGet and TypeScript npm dependencies in disposable volumes before the no-network smoke lanes, so the actual bot processes remain offline.

Verification

  • python scripts/test_update_runtime_versions.py
  • ./gradlew.bat --no-daemon --no-configuration-cache "-PtankRoyaleSource=../tank-royale" test
  • Docker: CONTAINER_ENGINE=docker bash scripts/verify-container.sh
  • Podman Desktop/WSL2: CONTAINER_ENGINE=podman bash scripts/verify-container.sh
  • The verifier checks non-root/read-only runtime execution and one-round Java, Python, C#, and TypeScript battles.
  • Tank Royale sample-bot archives and the Tank Royale documentation build pass locally.

The updater uses the official Adoptium, Microsoft .NET, Python.org, and Node.js feeds and deliberately does not auto-merge or publish images.

flemming-n-larsen and others added 4 commits September 9, 2026 20:57
Cliewen-Route: full\nCliewen-Change: CH-038
- Run dotnet restore/npm install as the non-root runtime user instead
  of root, keeping only a network-isolated chown step at root.
- Make smoke-battle.jsh exit nonzero on failure via System.exit(1).
- Ignore the nested tank-royale-source checkout and scope the
  runtime-refresh PR's add-paths to the two intended files.
- Guard the empty runtime_env array expansion for older Bash.
- Make /tmp noexec everywhere except the one lane that actually needs
  to execute copied binaries.
- Single-source the pinned Tank Royale commit via a TANK_ROYALE_COMMIT
  file instead of duplicating the SHA across four places.
- Extract the duplicated sample-bot Gradle build command into
  scripts/build-sample-bots.sh.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018rkcb4VPjge6CE6N8on1Mk
@flemming-n-larsen
flemming-n-larsen marked this pull request as ready for review September 10, 2026 17:37
@flemming-n-larsen
flemming-n-larsen merged commit 40de345 into main Sep 10, 2026
4 checks passed
@flemming-n-larsen
flemming-n-larsen deleted the ch-038-runtime-image-refresh branch September 12, 2026 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant