@eshepelyuk/semantic-release-helm-oci
v2.1.0
Published
semantic-release plugin for publishing Helm charts to OCI registries
Downloads
1,374
Readme
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. |
| chartPath
| Chart directory, where the Chart.yaml is located. |
Installation
npm i @eshepelyuk/semantic-release-helm-oci -D
Usage
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.
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 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 in Chart.yaml. To prevent plugin from setting--app-version
- useskipAppVersion
option.
Configuration
Environment variables
Credentials for OCI registry authentication 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/eshepelyuk/abc
. | string | undefined |
| skipAppVersion
| Use appVersion
from Chart.yaml when packaging chart, instead of using semantic-release nextVersion
| boolean | false |