Skip to content

ci: publish dev runtime images on main - #5

Open
KAJdev wants to merge 1 commit into
mainfrom
zeke/sdk-runtime-dev-images
Open

KAJdev wants to merge 1 commit into
mainfrom
zeke/sdk-runtime-dev-images

Conversation

@KAJdev

@KAJdev KAJdev commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Publish the full runtime image matrix as py<python>-dev on pushes to main, using the SDK’s main branch. Production releases publish versioned images and py<python>-latest.

release_tags="true"
elif [ "${{ github.event_name }}" = "push" ]; then
tag="dev"
sdk_spec="https://github.com/runpod/runpod-python/archive/refs/heads/main.tar.gz"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because this URL is the same on every run, RUNPOD_PACKAGE_SPEC doesn't change either, so the pip install "${RUNPOD_PACKAGE_SPEC}" layer is only rebuilt when pyproject.toml, README.md or src change (the COPY lines above it). A push that only touches workflows or tests gets a cache hit from type=gha and republishes -dev with whatever SDK main was the last time the layer was built. Separately, a change on runpod-python main doesn't trigger this workflow, so -dev lags SDK main until the next push here, and since the version is pretended to be 0.0.0.dev0 there's no way to tell from the image which SDK commit it has. Could prepare resolve the current SHA (git ls-remote https://github.com/runpod/runpod-python refs/heads/main) and use archive/<sha>.tar.gz? That rebuilds the layer whenever SDK main moves, keeps it cached when it hasn't, and puts the commit in the build log. An OCI label with the SHA would make it visible on the image too.

required: true
default: runpod
push:
branches: [main]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no concurrency group, so two merges to main in quick succession run this workflow in parallel, and both push the same -dev tags. The 30 runtime jobs and 5 base jobs of the two runs finish in any order, so the result can be task-gpu:py3.12-dev from the newer run next to queue-gpu:py3.12-dev from the older one. A runtime job can also build on top of a gpu-base:pyX-dev that the other run has just replaced. Could the workflow get something like concurrency: { group: images-${{ github.event_name }}-${{ github.ref }}, cancel-in-progress: true } so only the newest push publishes?

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Concurrent publishing can overwrite newer dev images and make GPU jobs consume another run's base, while unchanged SDK URLs can cause cached layers to republish an outdated SDK.

2 open issues
What changed in this PR

Adds automatic development image publishing to the existing runtime image workflow, while preserving versioned and latest tags for releases.

Changes:

  • Publishes the full image matrix as py<python>-dev on pushes to main.
  • Uses the SDK’s main branch for development images.
  • Documents automatic development publishing and manual customization options.
File Description
README.md Documents development tags, SDK source, and manual publishing options.
.github/​workflows/​images.yml Adds the main push trigger and development image configuration.

Review effort: Balanced

Comment on lines +16 to +17
push:
branches: [main]
release_tags="true"
elif [ "${{ github.event_name }}" = "push" ]; then
tag="dev"
sdk_spec="https://github.com/runpod/runpod-python/archive/refs/heads/main.tar.gz"

This branch has not been deployed

No deployments
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.

3 participants