From 67cbd4fdd727f7a61156e68e7db8af44f883d0fd Mon Sep 17 00:00:00 2001 From: Chingis S Date: Sun, 20 Sep 2026 10:31:27 +0400 Subject: [PATCH 1/4] Adopt image revision tags Opt in to one increasing rN release sequence per repository and document image revisions separately from upstream software versions. Update applicable publishing and build inputs while retaining legacy tags and build argument compatibility. --- .github/actions/release.sh | 6 +++--- .image-release-format | 1 + README.md | 7 +++++-- 3 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 .image-release-format diff --git a/.github/actions/release.sh b/.github/actions/release.sh index 42b1930..8c60153 100644 --- a/.github/actions/release.sh +++ b/.github/actions/release.sh @@ -27,10 +27,10 @@ if [[ "${GITHUB_REF}" == refs/heads/master || "${GITHUB_REF}" == refs/tags/* ]]; fi if [[ "${GITHUB_REF}" == refs/tags/* ]]; then - stability_tag="${GITHUB_REF##*/}" - tags=("${minor_tag}-${stability_tag}") + image_revision="${GITHUB_REF##*/}" + tags=("${minor_tag}-${image_revision}") if [[ -n "${LATEST_MAJOR}" ]]; then - tags+=("${major_tag}-${stability_tag}") + tags+=("${major_tag}-${image_revision}") fi else if [[ -n "${LATEST}" ]]; then diff --git a/.image-release-format b/.image-release-format new file mode 100644 index 0000000..bc0ffae --- /dev/null +++ b/.image-release-format @@ -0,0 +1 @@ +revision diff --git a/README.md b/README.md index 79e5c3f..59e5a77 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,10 @@ ## Docker Images -❗For better reliability we release images with stability tags (`wodby/python:3-X.X.X`) which correspond to [git tags](https://github.com/wodby/python/releases). We strongly recommend using images only with stability tags. +Use image revision tags such as `wodby/python:3.14-rN` to select a Wodby image revision. +The `rN` suffix identifies the image revision separately from the upstream software version. +See [release tags](https://github.com/wodby/python/tags) for available revisions and the [image revision policy](https://github.com/wodby/images#image-revisions) for upgrade guidance. +Existing SemVer image tags remain available. About images: @@ -108,7 +111,7 @@ Change `WODBY_USER_ID` and `WODBY_GROUP_ID` mainly for local dev version of imag ## Changelog -Changes per stability tag reflected in the git tags description under [releases](https://github.com/wodby/python/releases). +For changes in each image revision, see the [release notes](https://github.com/wodby/python/releases). ## Crond From c1ed213d1ed55d7f09218f3beb9ca5d9e2811faa Mon Sep 17 00:00:00 2001 From: Chingis S Date: Sun, 20 Sep 2026 12:06:44 +0400 Subject: [PATCH 2/4] Add major, minor, and full-version revision aliases Keep major and minor tags on the repository release counter. Add a full-version revision counter starting at r0 and matching annotated Git aliases for every published versioned revision tag. Run the pinned shared publisher after all image publishing jobs succeed, verify manifest digests, and prevent alias tags from triggering builds. Preserve legacy release behavior and document the tag mapping. --- .github/actions/release.sh | 5 ++ .github/workflows/workflow.yml | 16 ++++ .image-revision-aliases.json | 134 +++++++++++++++++++++++++++++++++ README.md | 5 +- 4 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 .image-revision-aliases.json diff --git a/.github/actions/release.sh b/.github/actions/release.sh index 8c60153..c90d7a4 100644 --- a/.github/actions/release.sh +++ b/.github/actions/release.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash +# Version aliases identify published releases; only primary tags publish images. +if [[ "${GITHUB_REF:-}" =~ ^refs/tags/.+-r[0-9]+$ ]]; then + exit 0 +fi + set -ex if [[ "${GITHUB_REF}" == refs/heads/master || "${GITHUB_REF}" == refs/tags/* ]]; then diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 94d9ad4..0554622 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -7,6 +7,7 @@ on: tags: - '*' + - '!*-r[0-9]*' pull_request: @@ -128,3 +129,18 @@ jobs: user_id: ${{ matrix.user_id }} latest: ${{ matrix.python.latest }} latest_major: ${{ matrix.python.latest_major }} + + image-revision-aliases: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/r') + needs: [ push ] + runs-on: ubuntu-latest + permissions: + contents: write + concurrency: + group: image-revision-aliases-${{ github.ref }} + cancel-in-progress: false + steps: + - uses: wodby/images/.github/actions/image-revision-aliases@1c1a2951d6ce2e080e6ab6f62a935f4e34089feb + with: + docker_username: ${{ secrets.DOCKER_USERNAME }} + docker_password: ${{ secrets.DOCKER_PASSWORD }} diff --git a/.image-revision-aliases.json b/.image-revision-aliases.json new file mode 100644 index 0000000..7b826b0 --- /dev/null +++ b/.image-revision-aliases.json @@ -0,0 +1,134 @@ +{ + "schema": 1, + "image": "wodby/python", + "versions": [ + { + "version": { + "env": "PYTHON314" + }, + "variants": [ + { + "short": [ + "{minor}", + "{major}" + ], + "full": "{version}" + }, + { + "short": [ + "{minor}-dev", + "{major}-dev" + ], + "full": "{version}-dev" + }, + { + "short": [ + "{minor}-dev-macos", + "{major}-dev-macos" + ], + "full": "{version}-dev-macos" + } + ] + }, + { + "version": { + "env": "PYTHON313" + }, + "variants": [ + { + "short": [ + "{minor}" + ], + "full": "{version}" + }, + { + "short": [ + "{minor}-dev" + ], + "full": "{version}-dev" + }, + { + "short": [ + "{minor}-dev-macos" + ], + "full": "{version}-dev-macos" + } + ] + }, + { + "version": { + "env": "PYTHON312" + }, + "variants": [ + { + "short": [ + "{minor}" + ], + "full": "{version}" + }, + { + "short": [ + "{minor}-dev" + ], + "full": "{version}-dev" + }, + { + "short": [ + "{minor}-dev-macos" + ], + "full": "{version}-dev-macos" + } + ] + }, + { + "version": { + "env": "PYTHON311" + }, + "variants": [ + { + "short": [ + "{minor}" + ], + "full": "{version}" + }, + { + "short": [ + "{minor}-dev" + ], + "full": "{version}-dev" + }, + { + "short": [ + "{minor}-dev-macos" + ], + "full": "{version}-dev-macos" + } + ] + }, + { + "version": { + "env": "PYTHON310" + }, + "variants": [ + { + "short": [ + "{minor}" + ], + "full": "{version}" + }, + { + "short": [ + "{minor}-dev" + ], + "full": "{version}-dev" + }, + { + "short": [ + "{minor}-dev-macos" + ], + "full": "{version}-dev-macos" + } + ] + } + ] +} diff --git a/README.md b/README.md index 59e5a77..1c378a9 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,10 @@ ## Docker Images Use image revision tags such as `wodby/python:3.14-rN` to select a Wodby image revision. -The `rN` suffix identifies the image revision separately from the upstream software version. +Major and minor tags use the repository release number. Full-version tags such as +`wodby/python:3.14.7-r0` start at `r0` for each exact upstream version. +Every published versioned revision tag has a matching annotated Git tag pointing to its release commit. +Existing tags remain available after support for their major or minor version ends. See [release tags](https://github.com/wodby/python/tags) for available revisions and the [image revision policy](https://github.com/wodby/images#image-revisions) for upgrade guidance. Existing SemVer image tags remain available. From 8ce833da25abd73c1a22932adb2b49e5ef51f109 Mon Sep 17 00:00:00 2001 From: Chingis S Date: Sun, 20 Sep 2026 12:35:31 +0400 Subject: [PATCH 3/4] Simplify image revision terminology Describe previously published image tags without referring to semantic versioning. Keep their availability and the image revision tag mapping unchanged. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c378a9..0bc35fb 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Major and minor tags use the repository release number. Full-version tags such a Every published versioned revision tag has a matching annotated Git tag pointing to its release commit. Existing tags remain available after support for their major or minor version ends. See [release tags](https://github.com/wodby/python/tags) for available revisions and the [image revision policy](https://github.com/wodby/images#image-revisions) for upgrade guidance. -Existing SemVer image tags remain available. +Previously published image tags remain available. About images: From c05fc4ea0b1b99d7ed8e9b5639ccb809205590b0 Mon Sep 17 00:00:00 2001 From: Chingis S Date: Sun, 20 Sep 2026 12:54:05 +0400 Subject: [PATCH 4/4] Start image revisions at r0 Document r0 as the first image revision. Pin the shared alias publisher that accepts r0 primary releases and parent pins. --- .github/workflows/workflow.yml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 0554622..1f177cd 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -140,7 +140,7 @@ jobs: group: image-revision-aliases-${{ github.ref }} cancel-in-progress: false steps: - - uses: wodby/images/.github/actions/image-revision-aliases@1c1a2951d6ce2e080e6ab6f62a935f4e34089feb + - uses: wodby/images/.github/actions/image-revision-aliases@6a3956567002e48847338be97b4d955ee40ae7cb with: docker_username: ${{ secrets.DOCKER_USERNAME }} docker_password: ${{ secrets.DOCKER_PASSWORD }} diff --git a/README.md b/README.md index 0bc35fb..44623be 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ ## Docker Images Use image revision tags such as `wodby/python:3.14-rN` to select a Wodby image revision. -Major and minor tags use the repository release number. Full-version tags such as +Major and minor tags use the repository release number, starting at `r0`. Full-version tags such as `wodby/python:3.14.7-r0` start at `r0` for each exact upstream version. Every published versioned revision tag has a matching annotated Git tag pointing to its release commit. Existing tags remain available after support for their major or minor version ends.