# Helm

---

## Overview

Your Helm charts stored, versioned, and distributed through one registry using the OCI standard.

JFrog Fly supports Helm charts via OCI (Open Container Initiative) registry, ensuring compatibility with Helm 3.8+ and modern chart workflows.

---

## Supported Clients

JFrog Fly supports Helm charts with:

- **Helm CLI** (`helm push`, `helm pull`, `helm install`) - The standard Helm command-line tool (Helm 3.8+)

---

## Upload / Push Chart

### With Fly App

Activate Helm in your Fly App to automatically authenticate, then push your chart:

```bash
helm push my-chart-1.0.0.tgz oci://<your-fly-subdomain>.jfrog.io/helmoci
```

### Manual Configuration

**1. Generate an access token** in Fly Token Management

**2. Login to the Helm OCI registry:**

```bash
helm registry login <your-fly-subdomain>.jfrog.io -u <your-fly-username> -p <your-fly-token>
```

**3. Package your chart** (if not already packaged):

```bash
helm package my-chart/
```

**4. Push your chart:**

```bash
helm push my-chart-1.0.0.tgz oci://<your-fly-subdomain>.jfrog.io/helmoci
```

---

## Download / Pull Chart

### With Fly App

Activate Helm in your Fly App to automatically authenticate, then pull your chart:

```bash
helm pull oci://<your-fly-subdomain>.jfrog.io/helmoci/my-chart --version 1.0.0
```

### Manual Configuration

**1. Generate an access token** in Fly Token Management

**2. Login to the Helm OCI registry:**

```bash
helm registry login <your-fly-subdomain>.jfrog.io -u <your-fly-username> -p <your-fly-token>
```

**3. Pull your chart:**

```bash
helm pull oci://<your-fly-subdomain>.jfrog.io/helmoci/my-chart --version 1.0.0
```

### Install Directly

You can install a chart directly from Fly Registry without pulling first:

```bash
helm install my-release oci://<your-fly-subdomain>.jfrog.io/helmoci/my-chart --version 1.0.0
```

---

## Push/Pull Charts with CI

To push and pull Helm charts with CI, update your GitHub Actions workflow to include the Fly action.

Simply ask your coding agent: **"Configure my workflows with Fly"** and Fly MCP will configure your GitHub Actions workflow yml file, as follows:

**1. Add permissions** (top level, after `on:`):
```yaml
permissions:
  contents: read
  id-token: write
```

**2. Add Fly Action** (after setup steps, before artifact operations):
```yaml
- uses: jfrog/fly-action@v1              # Setup Fly package managers
```

**3. Push your chart using your Fly registry path:** `oci://${{ env.FLY_REGISTRY_SUBDOMAIN }}/helmoci`

### GitHub Action Example

```yaml
name: Package and Push Helm Chart

on:
  push:
    branches: [main]

permissions:
  contents: read
  id-token: write

jobs:
  helm:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: jfrog/fly-action@v1              # Setup Fly package managers

      - run: helm package my-chart/

      - run: helm push my-chart-1.0.0.tgz oci://${{ env.FLY_REGISTRY_SUBDOMAIN }}/helmoci
        # Push to Fly registry
```

---

*Back to [Package Managers →](../)*
