semantic-release-helm-oci
semantic-release plugin for publishing Helm charts to OCI compatible registries.
Step | Description |
---|---|
verifyConditions |
Verify plugin configuration and login to Helm registry. |
prepare |
Package Helm chart to local folder. |
publish |
Publish Helm chart to OCI registry. |
Installation
npm i @edgefarm/semantic-release-helm-oci -D
Usage
The plugin can be configured in the semantic-release configuration file :
.releaserc.json
{
"plugins": [
["@edgefarm/semantic-release-helm-oci", {
"registry": "oci://ghcr.io/edgefarm/abc",
"chartPath" "charts/abc"
}]
]
}
.releaserc.yaml
plugins:
-
- '@edgefarm/semantic-release-helm-oci'
- registry: oci://ghcr.io/edgefarm/abc
chartPath: "charts/abc"
With this example, for each release, a Helm chart will be published to
oci://ghcr.io/edgefarm/abc/${CHART_NAME}:${CHART_VERSION}
.
Where ${CHART_NAME}
is a name from Chart.yaml
and ${CHART_VERSION}
is a version detected by semantic-release.
version
and appVersion
in Chart.yaml
Plugin intentionally doesn't modify Chart.yaml during the release. It's recommended to use Git tags for maintaining release versions.
The plugin leverages --version
and --app-version
when calling helm package
to manage published chart versions and not rely on Chart.yaml
.
There's two usage scanarios for this plugin:
-
The chart and the application are co-located in the same repository.
In this case, the
version
andappVersion
are both changed during a release. This is a default plugin's behaviour. -
The chart is maintained separately from the application.
In this case
appVersion
is modified outside of chart's release process and must be updated manually in Chart.yaml. To prevent plugin from setting--app-version
- useskipAppVersion
option.
Configuration
Environment variables
Credentials for OCI registry authentification are passed through environment variables:
Variable | Description |
---|---|
REGISTRY_USERNAME |
Required. OCI registry username. |
REGISTRY_PASSWORD |
Required. OCI registry password. |
Options
Option | Description | Type | Default |
---|---|---|---|
registry |
Required. Registry URL with oci:// schema,e.g. oci://ghcr.io/edgefarm/abc . |
string | undefined |
skipAppVersion |
Use appVersion from Chart.yaml when packaging chart, instead of using semantic-release nextVersion
|
boolean | false |
chartPath |
Chart directory, where the Chart.yaml is located. | string | ./ |