semantic-release plugin to publish a helm chart to a helm repository and an OCI registry.
It updates Helm chart version
and appVersion
in Chart.yaml
.
It supports the following protocols:
npm install -D @pubgcorp/semantic-release-helm
Options | Descriptions | Required | type | Default |
---|---|---|---|---|
chartRepository | URI for chart repository | yes* | string |
none |
ociRegistry | URI for OCI registry | yes* | string |
none |
chartDirectory | Chart directory where Chart.yml is located |
no | string |
. |
versionUpdatePolicy | Set update policy for version field of Chart.yaml |
no | "fixed" | "sync" | "desync" |
"sync" |
appVersionUpdatePolicy | Set update policy for appVersion field of Chart.yaml |
no | "fixed" | "sync" | "desync" |
"sync" |
* At least one of ociRegistry or chartRepository is required.
Pass credentials through environment variable to login helm repository.
export HELM_REPOSITORY_USERNAME=<USERNAME>
export HELM_REPOSITORY_PASSWORD=<PASSWORD>
export HELM_REGISTRY_USERNAME=<USERNAME>
export HELM_REGISTRY_PASSWORD=<PASSWORD>
HELM_REPOSITORY_USERNAME
and HELM_REPOSITORY_PASSWORD
are used for chart repository login.
HELM_REGISTRY_USERNAME
and HELM_REGISTRY_PASSWORD
are used for OCI registry login.
If you are using oci registry and no credentials are provided, it will use the HELM_REPOSITORY_USERNAME
and HELM_REPOSITORY_PASSWORD
for login.
Update policy
- fixed: Use Fixed version. The version will not be updated
- sync: Use
nextRelease.version
. New version will be set tonextRelease.version
- desync: Version will be increased according to
nextRelease.type
(one ofmajor
,premajor
,minor
,preminor
,patch
,prepatch
,prerelease
)
{
"plugins": [
[
"@pubgcorp/semantic-release-helm",
{
"chartRepository": "https://mychart.company.org/chartrepo/myproject",
"ociRegistry": "mychart.company.org/myproject",
"chartDirectory": "./chart",
"versionUpdatePolicy": "sync",
"appVersionUpdatePolicy": "fixed"
}
]
]
}
- Your chart repository is
https://mychart.company.org/chartrepo/myproject
and OCI registry ismychart.company.org/myproject
. Chart.yaml
is inchart
sub-directoryversion
will follow next release version andappVersion
will not modified
Old version
# semantic-release version: 1.2.3
version: 1.2.3
appVersion: 2.3.1
New version - Case #1 patch
# semantic-release version: 1.2.4
version: 1.2.4
appVersion: 2.3.1
New version - Case #2 minor
# semantic-release version: 1.3.0
version: 1.3.0
appVersion: 2.3.1
New version - Case #3 major
# semantic-release version: 2.0.0
version: 2.0.0
appVersion: 2.3.1