Skip to content

ci: publish tested gVisor image to Docker Hub latest - #64

Merged
tianyuzhou95 merged 4 commits into
mainfrom
codex/publish-gvisor-latest
Sep 12, 2026
Merged

ci: publish tested gVisor image to Docker Hub latest#64
tianyuzhou95 merged 4 commits into
mainfrom
codex/publish-gvisor-latest

Conversation

@tianyuzhou95

@tianyuzhou95 tianyuzhou95 commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

The main CI currently builds an image for E2E without publishing it. This change publishes the tested Linux/amd64 rrt image to akerneldev/all-in-one:latest after SDK, distribution, deployment-script, and standalone E2E checks pass. The public image includes only gVisor; Kata, Firecracker, virtiofsd, and runc are excluded and checked before E2E.

PRs and forks skip Docker Hub login and publishing. Main runs are preserved and their build/test/publish jobs are serialized. The job checks the current main head before any push: superseded commits and reruns of older commits publish nothing. Only latest is pushed, with no SHA or historical tags.

Examples run with unbuffered output. The nine-section Dockerfile launch example gets a 600-second outer budget; other examples retain 120 seconds. Its core startup marker uses Ubuntu's existing shell instead of downloading Python from apt. All RUN, copy/ignore, permission, environment, working-directory, and startup assertions remain, while package-mirror availability no longer determines Dockerfile E2E results.

Uses the repository variable DOCKERHUB_USERNAME and secret DOCKERHUB_TOKEN. Source builds retain their existing optional VM runtime defaults. The Dockerfile guide and agent guidance describe the resulting behavior. The project and deployment READMEs are unchanged.

Validation:

  • Deployment-script and workflow Bash syntax checks passed.
  • Four mocked publication cases passed: current main, superseded main with zero Docker operations, main-query failure with no push, and push failure.
  • The example shell harness verified timeout selection for all 10 examples and failure propagation.
  • The generated Dockerfile/context precheck, startup shell syntax, and environment/cwd marker checks passed; the changed example passes Ruff.
  • git diff --check passed. actionlint 1.7.12 passed with only its unsupported concurrency.queue diagnostic excluded; GitHub accepted this documented configuration and ran PR CI.
  • Full CI passed on implementation commit 82797fb0: SDK checks, distributions, deployment syntax, gVisor-only image build/content validation, all SDK examples including all nine Dockerfile sections, and runsc checkpoint reload/reverse-tunnel E2E. Docker Hub login and publishing were skipped for the PR event.
  • Build latency was traced to Ubuntu apt index downloads (12–13 minutes in earlier attempts). The Dockerfile example now avoids additional package downloads during E2E.
  • Actual Docker Hub authentication and publishing are exercised after merge to main.

The follow-up commit only restores the two READMEs; workflow and example code are unchanged from the successful CI run.

Build the public all-in-one image with only gVisor and run the SDK gates
and standalone E2E before publishing the same tested image. Restrict Docker
Hub authentication and publishing to upstream main push events.

Preserve main runs and serialize the build, test, and publication job.
Check the main head before pushing so superseded commits and old reruns
skip publication, and publish only latest without per-commit image tags.

Document the public image contents and required Actions credentials while
preserving the optional VM runtime defaults for source builds.

Signed-off-by: Tianyu Zhou <albert.zty@antgroup.com>
Give the multi-section Dockerfile launch example a 600-second CI budget
while retaining the 120-second limit for other examples. Its package
installation RUN permits 300 seconds, so the previous outer limit killed
the process before the SDK could report slow installation failures.

Run examples with unbuffered output and bound forced termination so CI
shows section progress and a stuck process cannot outlive the job budget.

Signed-off-by: Tianyu Zhou <albert.zty@antgroup.com>
Use the Ubuntu base image shell for the core example's startup marker
instead of installing Python from an apt mirror on every sandbox launch.
This preserves the RUN, context-copy, permissions, environment, working
directory, and startup assertions while removing an unrelated network
failure from the Dockerfile capability checks.

Keep unbuffered CI output and the multi-section example budget, and update
the launch guide and agent instructions to describe the package-free path.

Signed-off-by: Tianyu Zhou <albert.zty@antgroup.com>
Restore the project and deployment READMEs to their existing content.
Keep the CI publication contract in agent guidance and retain the
Dockerfile example documentation with its implementation change.

Signed-off-by: Tianyu Zhou <albert.zty@antgroup.com>
@tianyuzhou95
tianyuzhou95 merged commit 863c6c6 into main Sep 12, 2026
9 checks passed
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