Skip to content

pubg/semantic-release-helm

Repository files navigation

semantic-release-helm

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:

Install

npm install -D @pubgcorp/semantic-release-helm

Configuration

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.

About versionUpdatePolicy & appVersionUpdatePolicy

Update policy

  • fixed: Use Fixed version. The version will not be updated
  • sync: Use nextRelease.version. New version will be set to nextRelease.version
  • desync: Version will be increased according to nextRelease.type (one of major, premajor, minor, preminor, patch, prepatch, prerelease)

Example

{
  "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 is mychart.company.org/myproject.
  • Chart.yaml is in chart sub-directory
  • version will follow next release version and appVersion 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