Helm Chart

kind: helmChart

sourceconditiontarget

source

The Helm chart "source" retrieves the latest version of a Helm package.

condition

The Helm chart "condition" tests if a helm chart release exist.

target

The Helm chart "target" updates a helmchart and bump the chart metadata. It handle AppVersion, incremental version update and requirements.lock. It both works with helm chart located locally or on a git repository. If the helm chart is located locally, then chart name must be an absolute path to the chart.

Parameter

NameTypeDescriptionRequired
appversionboolean

AppVersion defines if a Chart changes, triggers, or not, a Chart AppVersion update. The value is retrieved from the source input.

	compatible:
		* target

	default
		false
filestring

file defines the Helm Chart file to update. the path must be relative to chart root directory the chart name is defined by the parameter “name”

	compatible:
		* source
		* condition
		* target

	default:
		default set to "values.yaml"
keystring

key defines the yamlpath query used for retrieving value from a YAML document

	compatible:
		* source
		* condition
		* target

	example:
		* key: $.image.tag
		* key: $.images[0].tag

	remark:
		* key is a simpler version of yamlpath accepts keys.
namestring

name defines the Chart name path like ‘stable/chart’.

	compatible:
		* source
		* condition
		* target

	example:
		* name: stable/chart

	remark:
		* when used with a scm, the name must be the relative path from the scm repository root directory
		  with such as "stable/chart"
passwordstring

password specifies the container registry password to use for authentication. Not compatible with token

	compatible:
		* source
		* condition
		* target

	default:
		by default credentials are fetch from the local environment such as `~/.docker/config.json`.

	remark:
		Not compatible with token
skippackagingboolean

skippackaging defines if a Chart should be packaged or not.

	compatible:
		* target

	default: false
tokenstring

token specifies the container registry token to use for authentication.

	compatible:
		* source
		* condition
		* target

	default:
		by default credentials are fetch from the local environment such as `~/.docker/config.json`.

	remark:
		Not compatible with username/password
urlstring

url defines the Chart location URL.

	compatible:
		* source
		* condition

	example:
		* index.yaml
		* file://./index.yaml
		* https://github.com/updatecli/charts.git
		* oci://ghcr.io/olblak/charts/
usernamestring

username specifies the container registry username to use for authentication.

	compatible:
		* source
		* condition
		* target

	default:
		by default credentials are fetch from the local environment such as `~/.docker/config.json`.

	remark:
		Not compatible with token
valuestring

value is the value associated with a yamlpath query.

	compatible:
		* condition
		* target
versionstring

version defines the Chart version. It is used by condition to check if a version exists on the registry.

	compatible:
		* condition
versionfilterobject

versionfilter provides parameters to specify version pattern and its type like ‘regex’, ‘semver’, or just ’latest’.

	compatible:
		* source

	default:
		semver

	remark:
		* Helm chart uses semver by default.
    kindstringspecifies the version kind such as semver, regex, or latest
    patternstringspecifies the version pattern according the version kind
    strictbooleanstrict enforce strict versioning rule. Only used for semantic versioning at this time
versionincrementstring

versionIncrement defines if a Chart changes, triggers, or not, a Chart version update, accepted values is a comma separated list of “none,major,minor,patch,auto”.

	compatible:
		* target

	default:
		default set to "minor"

	remark:
		when multiple pipelines update the same chart, the versionIncrement will be applied multiple times.
		more information on https://github.com/updatecli/updatecli/issues/693

Example

# updatecli.yaml
name: Example of Helm Chart resources

scms:
  default:
    kind: github
    spec:
      user: "john"
      email: "john@example.com"
      owner: "olblak"
      repository: "charts"
      token: "{{ requiredEnv .github.token }}"
      username: "john"
      branch: "master"

sources:
  lastRelease:
    kind: helmchart
    spec:
      url: https://charts.jenkins.io
      name: jenkins

conditions:
  isPrometheuseHelmChartVersionAvailable:
    name: "Test if the prometheus helm chart is available"
    kind: helmchart
    spec:
      url: https://prometheus-community.github.io/helm-charts
      name: prometheus
      version: "11.16.5"

targets:
  chartjenkins:
    name: Bump Jenkins Upstream Chart Version
    kind: helmchart
    spec:
      name: "charts/jenkins"
      file: "requirements.yaml"
      key: "dependencies[0].version"
      versionincrement: minor

What it says:

Source

Retrieve the version from the Jenkins helm chart repository located on "https://charts.jenkins.io" ⇒ 2.7.1

Conditions

Then there is an helmchart condition: "Is the prometheus helm chart version "11.16.5" is available from https://prometheus-community.github.io/helm-charts? ⇒ Yes, proceed, No then abort

Targets If all conditions are met, we bump the Jenkins upstream version into our local one. We remove the requirements.lock if it exists. We bump the chart version using the incremental version (patch,minor,major). Finally we commit our changes and then open a pull request on Github.

Top