Files
homelab-jenkins-shared-libs/vars/bumpHelmChart.groovy
2026-04-26 13:43:49 +07:00

27 lines
1.2 KiB
Groovy

/**
* Bumps the patch version in Chart.yaml, updates appVersion and values.yaml image tag.
* Must be called inside container('tools') block (needs sed + git).
*
* config keys:
* imageTag (required) - new image tag to write into values.yaml
* chartFile (optional) - path to Chart.yaml, default: manifest/helm/Chart.yaml
* valuesFile (optional) - path to values.yaml, default: manifest/helm/values.yaml
*/
def call(Map config) {
def imageTag = config.imageTag
if (!imageTag) error('bumpHelmChart: imageTag is required')
def chartFile = config.chartFile ?: 'manifest/helm/Chart.yaml'
def valuesFile = config.valuesFile ?: 'manifest/helm/values.yaml'
def content = readFile(chartFile)
def matcher = content =~ /version:\s+(\d+)\.(\d+)\.(\d+)/
if (!matcher) error("bumpHelmChart: could not parse version in ${chartFile}")
def newVersion = "${matcher[0][1]}.${matcher[0][2]}.${(matcher[0][3] as int) + 1}"
sh "sed -i 's/^version: .*/version: ${newVersion}/' ${chartFile}"
sh "sed -i 's/^appVersion: .*/appVersion: \"${imageTag}\"/' ${chartFile}"
sh "sed -i 's/^ tag: .*/ tag: ${imageTag}/' ${valuesFile}"
}