Skip to main content
We welcome contributions to the Douban Helm Charts repository! This guide will help you get started with contributing bug fixes, new charts, or improvements to existing charts.

Code of Conduct

This project follows the CNCF Code of Conduct. By participating, you are expected to uphold this code.

Ways to Contribute

There are several ways you can contribute to this project:
  • Report bugs: Open an issue describing the bug and how to reproduce it
  • Suggest enhancements: Propose new features or improvements to existing charts
  • Submit pull requests: Fix bugs, add new charts, or improve documentation
  • Improve documentation: Help make our documentation clearer and more comprehensive

Pull Request Process

1

Fork and Clone

Fork the repository and clone it to your local machine:
git clone https://github.com/YOUR_USERNAME/charts.git
cd charts
2

Create a Branch

Create a new branch for your changes:
git checkout -b feature/my-new-chart
3

Make Your Changes

Make your changes following the chart development guidelines.
4

Test Your Changes

Ensure your changes pass all linting and testing requirements (see Testing Requirements).
5

Commit and Push

Commit your changes with a clear, descriptive commit message:
git add .
git commit -m "feat: add new chart for application X"
git push origin feature/my-new-chart
6

Open a Pull Request

Open a pull request against the master branch with a clear description of your changes.

Testing Requirements

All chart changes must pass automated testing before being merged. The CI/CD pipeline uses chart-testing (ct) to validate charts.

Automated Testing

When you open a pull request, the following automated checks will run:

Linting

The ct lint command validates your chart against best practices:
ct lint --target-branch master --config ct.yaml
This checks:
  • Chart.yaml structure and required fields
  • values.yaml formatting
  • Template syntax
  • Kubernetes resource specifications
  • Version increments (chart version must be bumped)

Chart Testing Configuration

The repository uses the following chart-testing configuration (from ct.yaml):
remote: origin
chart-dirs:
  - charts
chart-repos:
  - stable=https://charts.helm.sh/stable/
  - douban=https://douban.github.io/charts/
  - bitnami=https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
  - timescale=https://charts.timescale.com/
helm-extra-args: --timeout 600s

Local Testing

Before submitting a pull request, test your charts locally:
1

Install chart-testing

pip install yamllint yamale
# Or use the ct Docker image
2

Run linting locally

ct lint --chart-dirs charts --charts charts/YOUR_CHART
3

Test installation

helm install test-release charts/YOUR_CHART
helm test test-release
helm uninstall test-release

Chart Requirements

All charts submitted to this repository must meet the following requirements:

Required Files

  • Chart.yaml: Chart metadata
  • values.yaml: Default configuration values
  • README.md: Chart documentation
  • templates/: Directory containing Kubernetes manifests
  • templates/_helpers.tpl: Template helpers

Chart.yaml Requirements

apiVersion: v2
name: my-chart
version: 0.1.0  # Chart version (must increment with each change)
appVersion: "1.0.0"  # Application version
description: A clear description of what this chart does
home: https://example.com  # Project homepage
maintainers:
  - name: Your Name
type: application

Version Increments

Important: You must increment the version field in Chart.yaml for every change to the chart. The CI pipeline will fail if the version is not bumped.
Follow Semantic Versioning:
  • Major (1.0.0 → 2.0.0): Breaking changes
  • Minor (1.0.0 → 1.1.0): New features, backward compatible
  • Patch (1.0.0 → 1.0.1): Bug fixes, backward compatible

Commit Message Guidelines

Use clear, descriptive commit messages following conventional commits:
  • feat: add new chart for nginx
  • fix: correct service port in redis chart
  • docs: update README for kafka-ui chart
  • chore: bump chart version to 0.2.0

Review Process

Once you submit a pull request:
  1. Automated checks will run (linting, testing)
  2. Maintainer review: A project maintainer will review your changes
  3. Feedback: Address any feedback or requested changes
  4. Approval: Once approved, your PR will be merged
  5. Release: Charts are automatically released when merged to master

Release Process

The release process is fully automated:
  1. When a PR is merged to master, the release workflow is triggered
  2. chart-releaser packages changed charts
  3. Chart packages are uploaded to GitHub Releases
  4. The index.yaml is updated in the gh-pages branch
  5. Charts become available in the Helm repository
You don’t need to manually trigger releases - just merge to master!

Getting Help

If you need help with contributing:

License

By contributing to this project, you agree that your contributions will be licensed under the same license as the project.

Build docs developers (and LLMs) love