This guide explains how to add new charts and release updates.
mkdir -p charts/<chart-name>/templatescharts/<chart-name>/
├── Chart.yaml # Chart metadata (name, version, description)
├── values.yaml # Default configuration values
├── README.md # Chart documentation
├── .helmignore # Files to exclude from package
└── templates/ # Kubernetes manifest templates
apiVersion: v2
name: my-chart
description: Short description of what this chart deploys
type: application
version: 0.1.0
appVersion: "1.0.0"# Lint
helm lint charts/<chart-name>
# Test template rendering
helm template my-release charts/<chart-name>
# Test with custom values
helm template my-release charts/<chart-name> -f custom-values.yamlCreate charts/<chart-name>/README.md with:
- Description
- Prerequisites
- Installation command
- Configuration table (parameters, descriptions, defaults)
- Usage examples
Add your chart to the table in README.md:
| [my-chart](./charts/my-chart) | Short description |git checkout -b add-my-chart
git add charts/<chart-name> README.md
git commit -m "Add my-chart"
git push origin add-my-chartOpen a PR against main. The CI pipeline will automatically lint and validate your chart.
Edit charts/<chart-name>/Chart.yaml:
version: 0.2.0 # Bump thisgit add charts/<chart-name>/Chart.yaml
git commit -m "Bump <chart-name> to 0.2.0"
git push origin mainThe tag format is <chart-name>-<version>:
git tag <chart-name>-0.2.0
git push origin <chart-name>-0.2.0The release workflow will:
- Validate the tag version matches
Chart.yaml - Lint and package the chart
- Push to GitHub Container Registry
Check the workflow status at: https://github.com/helmcode/helm-charts/actions
Once complete, the chart is available at:
oci://ghcr.io/helmcode/helm-charts/<chart-name>
- Single source of truth: Version is defined ONLY in
Chart.yaml - Semantic versioning: Use
MAJOR.MINOR.PATCH- MAJOR: Breaking changes
- MINOR: New features (backwards compatible)
- PATCH: Bug fixes
- Tag must match: The release pipeline validates that tag version equals
Chart.yamlversion
- All code, comments, and documentation in English
- Follow Helm best practices
- Include meaningful defaults in
values.yaml - Document all configurable parameters