A simple Python script for updating the version in Kubernetes Helm Chart.yaml,
VERSION, and pyproject.toml/setup.py files.
- Ensures version consistency across all files.
- Enforces Semantic Versioning 2.0.0.
- Supports an optional lowercase 'v' prefix (e.g.,
v1.5.4-beta2).
To install pybump, run:
pip install pybumpTo bump the version:
pybump bump [-h] --file PATH_TO_CHART.YAML --level {major,minor,patch} [--quiet]To set an explicit version or automatically update release metadata:
pybump set --file PATH_TO_CHART.YAML --set-version X.Y.Z [--quiet]The auto flag is primarily intended for CI/CD pipelines, such as pull request workflows:
pybump set --file PATH_TO_CHART.YAML --auto [--quiet]When using --auto, pybump appends the Git commit hash as release metadata to the version.
- Warning - The --auto flag can be risky, as it may detect a Git repository unintentionally. Ensure that the target file is part of the correct repository before running this command.
To get the current version:
pybump get --file PATH_TO_CHART.YAMLTo bump, get, or set the appVersion field in a Helm chart, use the --app-version flag:
pybump bump [-h] --file PATH_TO_CHART.YAML --level {major,minor,patch} [--quiet] [--app-version]Note
The --app-version flag applies only to Helm Chart.yaml files and has no effect on other file types.
A simple Jenkins CI pipeline (using the Kubernetes plugin) that utilizes the
set --file setup.py --auto option:
String label = "test-bump-ci-runner"
podTemplate(
label: label,
containers: [
containerTemplate(
name: 'pybump',
image: "arielev/pybump:1.10.2",
ttyEnabled: true,
command: 'sleep',
args: '1d'
),
containerTemplate(
name: 'jnlp',
image: 'jenkins/inbound-agent:jdk11',
ttyEnabled: true
)
]
) {
node(label) {
timeout(time: 10, unit: 'MINUTES') {
ansiColor('xterm') {
String version = ""
container('jnlp') {
git credentialsId: "credentials_id_here", url: "https://github.com/arielevs/pybump"
}
container('pybump') {
version = sh(
script: "pybump set --file setup.py --auto",
returnStdout: true
).trim()
}
println(version)
}
}
}
}Case: version: 0.0.1
pybump bump --file Chart.yaml --level patchResult: Version updated to 0.0.2.
---
Case: version: 0.1.4-alpha+meta.data
pybump bump --file Chart.yaml --level minorResult: Version updated to 0.2.0-alpha+meta.data.
---
Case: version: v0.0.3
pybump bump --file Chart.yaml --level majorResult: Version updated to v1.0.0.
---
Case: version: 0.0.1+some-metadata
pybump set --file Chart.yaml --set-version 1.4.0Result: Version updated to 1.4.0+metadata-here.
---
Case: version: v7.0.2
pybump set --file setup.py --autoResult: Version updated to v7.0.2-5a51e0e1d9894d3c5d4201619f10be242320cb59.
---
Case: appVersion: 2.3.2
pybump bump --file Chart.yaml --level patch --app-versionResult: appVersion updated to 2.3.3.
---
Case: version: 1.0.13
pybump get --file Chart.yamlResult: Returns 1.0.13.
---
Case: version: 1.0.13+some-metadata
pybump get --file Chart.yaml --releaseResult: Returns some.
To run pybump within a container:
docker run --rm --volume $(pwd):/tmp -t arielev/pybump set --file /tmp/setup.py --auto