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 pybump
To 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.YAML
To 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 patch
Result: Version updated to 0.0.2
.
---
Case: version: 0.1.4-alpha+meta.data
pybump bump --file Chart.yaml --level minor
Result: Version updated to 0.2.0-alpha+meta.data
.
---
Case: version: v0.0.3
pybump bump --file Chart.yaml --level major
Result: Version updated to v1.0.0
.
---
Case: version: 0.0.1+some-metadata
pybump set --file Chart.yaml --set-version 1.4.0
Result: Version updated to 1.4.0+metadata-here
.
---
Case: version: v7.0.2
pybump set --file setup.py --auto
Result: Version updated to v7.0.2-5a51e0e1d9894d3c5d4201619f10be242320cb59
.
---
Case: appVersion: 2.3.2
pybump bump --file Chart.yaml --level patch --app-version
Result: appVersion
updated to 2.3.3
.
---
Case: version: 1.0.13
pybump get --file Chart.yaml
Result: Returns 1.0.13
.
---
Case: version: 1.0.13+some-metadata
pybump get --file Chart.yaml --release
Result: Returns some
.
To run pybump within a container:
docker run --rm --volume $(pwd):/tmp -t arielev/pybump set --file /tmp/setup.py --auto