Warning
This project is in deprecation mode and needs a mantainer. Please check #9
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. |
npm i @eshepelyuk/semantic-release-helm-oci -D
The plugin can be configured in the semantic-release configuration file :
.releaserc.json
{
"plugins": [
["@eshepelyuk/semantic-release-helm-oci", {
"registry": "oci://ghcr.io/eshepelyuk/abc"
}]
]
}
.releaserc.yaml
plugins:
-
- '@eshepelyuk/semantic-release-helm-oci'
- registry: oci://ghcr.io/eshepelyuk/abc
With this example, for each release, a Helm chart will be published to
oci://ghcr.io/eshepelyuk/abc/${CHART_NAME}:${CHART_VERSION}
.
Where ${CHART_NAME}
is a name from Chart.yaml
and ${CHART_VERSION}
is a version detected by semantic-release.
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 scenarios 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 inChart.yaml
. To prevent plugin from setting--app-version
- useskipAppVersion
option.
Credentials for OCI registry authentication are passed through environment variables:
Variable | Description |
---|---|
REGISTRY_USERNAME |
Required. OCI registry username. |
REGISTRY_PASSWORD |
Required. OCI registry password. |
Option | Description | Type | Default |
---|---|---|---|
registry |
Required. Registry URL with oci:// schema,e.g. oci://ghcr.io/eshepelyuk/abc . |
string | undefined |
skipAppVersion |
Use appVersion from Chart.yaml when packaging chart, instead of using semantic-release nextVersion |
boolean | false |
chartPath |
Directory, where Chart.yaml is located. |
string | . |