Implementation:Kubeflow Kubeflow Git Tag Container Push
| Knowledge Sources | |
|---|---|
| Domains | Release Management, Git Tagging, Container Registry, CI/CD |
| Last Updated | 2026-02-13 00:00 GMT |
Overview
Concrete tool for tagging releases across all sub-project repos and pushing container images, provided by git tag commands, container registry push operations, and GitHub Release creation per sub-project.
Description
The Git Tag Container Push implementation defines the exact commands and workflows for creating git tags on sub-project repositories, building and pushing container images to registries, and creating GitHub Releases with changelogs. As noted in the kubeflow/kubeflow CHANGELOG.md (Lines 1-7), changelogs now live in the respective sub-project GitHub repositories and release information for the overall platform is available on the Kubeflow website. This implementation coordinates the decentralized tagging process across all Working Groups.
Usage
Use this implementation when:
- Integration tests have passed and the release team has signed off
- Sub-project Working Groups are ready to tag their component releases
- Container images need to be built and pushed for release tags
- GitHub Releases need to be created with changelogs and release notes
- The manifests repository needs to be tagged after all components are released
Code Reference
Source Location
- Repository: kubeflow/kubeflow
- File: CHANGELOG.md (Lines 1-7)
Signature
# Git Tag Creation Pattern
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z
# Container Image Push Pattern
docker build -t registry/component:vX.Y.Z .
docker push registry/component:vX.Y.Z
# GitHub Release Creation Pattern
gh release create vX.Y.Z --title "vX.Y.Z" --notes-file RELEASE_NOTES.md
Import
# CHANGELOG.md header (from kubeflow/kubeflow):
# # Changelog
# Changelogs can be found in the respective Kubeflow sub-project
# GitHub repositories.
# Release information for the overall Kubeflow AI Reference Platform
# is available on the Kubeflow website page.
# Access sub-project repositories for tagging
git clone https://github.com/kubeflow/trainer.git
git clone https://github.com/kserve/kserve.git
git clone https://github.com/kubeflow/katib.git
git clone https://github.com/kubeflow/pipelines.git
git clone https://github.com/kubeflow/model-registry.git
git clone https://github.com/kubeflow/spark-operator.git
git clone https://github.com/kubeflow/manifests.git
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| git_tag_version | string | Yes | Git tag in the format vX.Y.Z (e.g., v0.15.2, v0.19.0, v2.4.0) |
| container_image_tags | list of strings | Yes | Container image tags matching the git tag version for each component |
| changelog_content | string | Yes | Generated changelog content from git history since the previous release |
| release_notes | string | Yes | Compiled release notes with feature highlights, breaking changes, and migration instructions |
| integration_test_pass | boolean | Yes | Confirmation that E2E integration tests have passed |
| documentation_updated | boolean | Yes | Confirmation that ROADMAP.md and docs site have been updated |
| release_team_signoff | boolean | Yes | Formal sign-off from the release team authorizing the tag |
Outputs
| Name | Type | Description |
|---|---|---|
| git_tags | list of tag refs | Annotated git tags created on each sub-project repository |
| container_images | list of image URIs | Container images pushed to registries with release version tags |
| github_releases | list of URLs | Published GitHub Releases with changelogs and downloadable artifacts |
| manifests_tag | tag ref | Git tag on the kubeflow/manifests repository referencing all component versions |
Usage Examples
Example: Tagging a Sub-Project Release
# Tag the Katib v0.19.0 release
cd katib
git checkout main
git pull origin main
# Create an annotated tag
git tag -a v0.19.0 -m "Katib v0.19.0 release for Kubeflow v1.11"
# Push the tag to the remote
git push origin v0.19.0
# Create the GitHub Release with auto-generated notes
gh release create v0.19.0 \
--repo kubeflow/katib \
--title "Katib v0.19.0" \
--generate-notes
Example: Building and Pushing Container Images
# Build container images for a tagged release
# (typically triggered automatically by CI/CD on tag push)
# Manual build example for Katib controller
cd katib
docker build -t docker.io/kubeflowkatib/katib-controller:v0.19.0 \
-f cmd/katib-controller/v1beta1/Dockerfile .
docker push docker.io/kubeflowkatib/katib-controller:v0.19.0
# Tag as latest
docker tag docker.io/kubeflowkatib/katib-controller:v0.19.0 \
docker.io/kubeflowkatib/katib-controller:latest
docker push docker.io/kubeflowkatib/katib-controller:latest
Example: Tagging All Sub-Projects for v1.11
# Coordinated tagging across all sub-projects
# Each WG tags their own repo; this shows the expected tags:
# KServe (external org)
gh release create v0.15.2 --repo kserve/kserve \
--title "KServe v0.15.2" --generate-notes
# Katib
gh release create v0.19.0 --repo kubeflow/katib \
--title "Katib v0.19.0" --generate-notes
# Pipelines
gh release create 2.15.0 --repo kubeflow/pipelines \
--title "Pipelines 2.15.0" --generate-notes
# Model Registry
gh release create v0.3.4 --repo kubeflow/model-registry \
--title "Model Registry v0.3.4" --generate-notes
# Spark Operator
gh release create v2.4.0 --repo kubeflow/spark-operator \
--title "Spark Operator v2.4.0" --generate-notes
# Manifests (tagged last, after all components are released)
gh release create v1.11.0 --repo kubeflow/manifests \
--title "Kubeflow v1.11.0 Manifests" --generate-notes
Example: Generating a Changelog from Git History
# Generate a changelog between two releases
cd katib
git log v0.18.0..v0.19.0 --oneline --no-merges > changelog.txt
# Or use GitHub CLI to generate release notes
gh api repos/kubeflow/katib/releases/generate-notes \
-f tag_name=v0.19.0 \
-f previous_tag_name=v0.18.0 \
-q .body