The HelmPublish step publishes a Helm chart and associated build info from a location in a Git repo to a Helm repository in Artifactory.
This step uses the helm package
command to publish the collection of Helm files in the GitRepo to Artifactory.
The step can optionally publish build info with the Helm chart to Artifactory using the autoPublishBuildInfo
flag.
Once the Helm chart is published to Artifactory, it can be deployed to a Kubernetes cluster using HelmDeploy.
YAML Schema
The YAML schema for HelmPublish native step is as follows:
HelmPublish
pipelines: - name: <string> steps: - name: <string> type: HelmPublish configuration: #inherits all the tags from bash helmVersion: <2 | 3> # optional, defaults to 2 chartPath: <path string> flags: <option string> # optional lint: <true | false> # optional, default false lintFlags: <string> # optional valueFilePaths: # optional - <path and filename> autoPublishBuildInfo: <true | false> # default false inputResources: - name: <GitRepo resource> # required outputResources: - name: <HelmChart resource> # required - name: <BuildInfo resource> # optional execution: onStart: - echo "Preparing for work..." onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something went wrong" onComplete: #always - echo "Cleaning up some stuff"
Tags
name
An alphanumeric string (underscores are permitted) that identifies the step.
type
Must be HelmPublish
for this step type.
configuration
Specifies all configuration selections for the step's execution environment. This step inherits the Bash/ PowerShell step configuration tags, including these pertinent tags:
Tag | Description of usage | Required/Optional |
---|---|---|
| Must specify a GitRepo resource that contains the Helm chart. The step will package the chart into a versioned chart archive file. | Required |
| Must specify a HelmChart resource to update. The Must specify a BuildInfo resource when | Required May be required |
In addition, these tags can be defined to support the step's native operation:
Tags derived from Bash
All native steps derive from the Bash step. This means that all steps share the same base set of tags from Bash, while native steps have their own additional tags as well that support the step's particular function. So it's important to be familiar with the Bash step definition, since it's the core of the definition of all other steps.
Tag | Description of usage | Required/Optional |
---|---|---|
| A number representing the major version of Helm to use. Can be 2 or 3. Defaults to 2. | Optional |
| The path to the Helm chart in the GitRepo | Required |
| Command line options to pass to the helm package command. | Optional |
| When true, performs a lint test to verify that the chart is well formed. Defaults to false. | Optional |
| Options string to pass to the | Optional |
| Specifies values YAML file(s) that will be used in the lint command helm lint command. All environment variable references in the specified file(s) will be automatically replaced with values of matching runtime environment variables. | Optional |
| When true, publishes build info with the Helm chart. Default is false. | Optional |
execution
Declares collections of shell command sequences to perform for pre- and post-execution phases:
Tag | Description of usage | Required/Optional |
---|---|---|
| Commands to execute in advance of the native operation | Optional |
| Commands to execute on successful completion | Optional |
| Commands to execute on failed completion | Optional |
| Commands to execute on any completion | Optional |
The actions performed for the onExecute
phase are inherent to this step type and may not be overridden.
Examples
The following examples show how to configure a HelmPublish step.
Publish to Artifactory using Helm 3
A HelmPublish step using Helm 3 to publish to Artifactory.
HelmPublish
pipelines: - name: helmPublishPipeline steps: - name: helmPublishStep type: HelmPublish configuration: helmVersion: 3 chartPath: "./myChart" inputResources: - name: gitRepoResource outputResources: - name: helmChartResource
Using lint and values.yaml
A HelmPublish step with lint, using a values.yaml file, added before publishing the Helm chart.
HelmPublish
pipelines: - name: helmPublishPipeline steps: - name: helmPublishStep type: HelmPublish configuration: helmVersion: 3 chartPath: "./myChart" lint: true lintFlags: "--strict" valueFilePaths: - values.yaml inputResources: - name: gitRepoResource outputResources: - name: helmChartResource
Publish Build Info
A HelmPublish step that publishes build info.
HelmPublish
pipelines: - name: helmPublishPipeline steps: - name: helmPublishStep type: HelmPublish configuration: helmVersion: 3 chartPath: "./myChart" autoPublishBuildInfo: true inputResources: - name: gitRepoResource outputResources: - name: helmChartResource - name: buildInfoResource
Publish to Artifactory using Helm 2
A HelmPublish step using Helm 2 to publish to Artifactory.
HelmPublish
pipelines: - name: helmPublishPipeline steps: - name: helmPublishStep type: HelmPublish configuration: helmVersion: 2 chartPath: "./myChart" inputResources: - name: gitRepoResource outputResources: - name: helmChartResource
How it Works
When you use the HelmPublish native step in a pipeline, it performs the following functions in the background:
jfrog rt config (to configure the JFrog CLI with the Artifactory credentials)
jfrog rt use (to set the current default Artifactory configuration)
helm init --client-only (if the Helm version is 2)
replace_envs (if lint is true and there are valueFilePaths, to replace variable placeholders)
helm lint (if lint is true)
helm package
jfrog rt upload (upload the Helm chart)
write_output (to update the version in the output HelmChart resource)
jfrog rt build-collect-env (if autoPublishBuildInfo is true, collect environment variables)
jfrog rt build-publish (if autoPublishBuildInfo is true, publish the build info)
write_output (if autoPublishBuildInfo is true, to update the version in the output BuildInfo resource)