Run native Helm commands with build-info collection support.

When to Use

Use jf helm to package, push, and manage Helm charts with Artifactory as your chart registry. This integrates Helm operations with JFrog build-info for traceability and security scanning.

Prerequisites

  • Helm 3.x must be installed. Helm 3.8+ is required for OCI registry support.
  • Configure a server with jf config add or jf c add.
  • Authentication to Artifactory is required.

Build: jf helm

Run native Helm commands with build-info collection support.

To run Helm commands with Artifactory integration:

Synopsis

jf helm <helm-arguments> [options]

Aliases: none

Arguments

ArgumentRequiredDescription
<helm-arguments>YesHelm command and arguments (for example, package, push, dependency update)

Supported Subcommands

All standard Helm commands are supported through jf helm. The following subcommands collect build-info when --build-name and --build-number are provided:

SubcommandDescription
packagePackage a chart directory into a chart archive.
pushPush a chart to an OCI-compatible registry.
pullDownload a chart from a repository.
dependency updateUpdate chart dependencies from Chart.yaml.
installInstall a chart into a Kubernetes cluster.
upgradeUpgrade a release to a new chart version.
repoManage chart repositories.

Any Helm command not listed above is passed through to the native Helm client.

Build Options

FlagDefaultDescription
--build-nameBuild name for build-info. Requires --build-number.
--build-numberBuild number for build-info. Requires --build-name.
--moduleOptional module name for build-info. Requires --build-name and --build-number.
--passwordJFrog password
--projectJFrog Artifactory project key
--repository-cachePath to the Helm repository cache directory. This flag is functional but does not appear in jf helm --help output.
--server-idServer ID configured using jf config add
--usernameArtifactory username

Build Examples

View Help

jf helm --help

Package a Chart with Build-Info

jf helm package ./mychart --build-name=<build-name> --build-number=<build-number>

Where:

  • ./mychart is the path to the chart directory
  • <build-name> is a name for the build (e.g., helm-charts)
  • <build-number> is a number or identifier for the build run (e.g., 1)

For example:

jf helm package ./mychart --build-name=helm-charts --build-number=1

Push a Chart to OCI Registry

jf helm push mychart-0.1.0.tgz oci://<repo-host>/helm-local --build-name=<build-name> --build-number=<build-number>

Where:

  • <repo-host> is your Artifactory hostname (e.g., acme.jfrog.io)

For example:

jf helm push mychart-0.1.0.tgz oci://acme.jfrog.io/helm-local --build-name=helm-charts --build-number=1

Update Chart Dependencies with Build-Info

jf helm dependency update ./mychart --build-name=<build-name> --build-number=<build-number>

Important Notes

  • No separate config command: Unlike other build tools, Helm does not have a jf helm-config command. Authentication is handled via --server-id or the active server configuration.
  • OCI registries: For OCI-based Helm registries (Helm 3.8+), use the oci:// prefix in push/pull commands.
  • Build-info: Use --build-name and --build-number to collect chart info, then publish with jf rt build-publish.
  • Chart dependencies: jf helm dependency update resolves chart dependencies from Artifactory's Helm repositories.

CI/CD Example (GitHub Actions)

# .github/workflows/build.yml
steps:
  - uses: actions/checkout@v4
  - name: Setup JFrog CLI
    uses: jfrog/setup-jfrog-cli@v4
    env:
      JF_URL: ${{ vars.JF_URL }}
      JF_ACCESS_TOKEN: ${{ secrets.JF_ACCESS_TOKEN }}
  - name: Package Helm chart
    run: jf helm package ./mychart --build-name=helm-charts --build-number=${{ github.run_number }}
  - name: Push Helm chart
    run: jf helm push mychart-0.1.0.tgz oci://acme.jfrog.io/helm-local --build-name=helm-charts --build-number=${{ github.run_number }}
  - name: Publish build info
    run: jf rt build-publish helm-charts ${{ github.run_number }}

Troubleshooting

SymptomCauseFix
401 / 403 on push or pullInvalid credentials or insufficient permissionsRe-run jf config add or pass --server-id explicitly
OCI push failsHelm version does not support OCIUpgrade to Helm 3.8+ for OCI registry support
jf helm push target not foundMissing oci:// prefix for OCI registriesUse oci://<registry-url>/<repo> format
Chart dependencies not resolved from ArtifactoryHelm repo not added or not authenticatedRun helm repo add with Artifactory URL and credentials
Build-info not collected--build-name and --build-number not passedAdd both flags to the Helm command

Enable debug logging: export JFROG_CLI_LOG_LEVEL=DEBUG


Related Topics