Repository navigation
Conversation
| 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" |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
🟡 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>-devon pushes tomain. - Uses the SDK’s
mainbranch 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
| 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" |


Publish the full runtime image matrix as
py<python>-devon pushes tomain, using the SDK’smainbranch. Production releases publish versioned images andpy<python>-latest.