/helm-upgrade

A Python CLI that manages dependencies of local Helm Charts

Primary LanguagePythonMIT LicenseMIT

helm-upgrade

⚠️ This repository is archived and no longer actively maintained! ⚠️

PyPI version pre-commit.ci status CI Tests codecov

Do you manage a Helm Chart that has dependencies on other Helm Charts? Are you fed up of manually updating these dependencies? Then this is the tool for you! helm-upgrade is a Python command line interface (CLI) that automatically updates the dependencies of local Helm Charts.

This tool was inspired by bump-helm-deps-action.

Table of Contents


🚀 Installation

It's recommended to use Python version 3.8 with this tool.

🐍 pip

pip install helm-upgrade

🔧 Manual

First of all, clone this repository and change into it.

git clone https://github.com/sgibson91/helm-upgrade.git
cd helm-upgrade

Use Python to install requirements and the package. Python 3.8 is recommended.

python -m pip install .

Test the installation by calling the help page.

helm-upgrade --help

♻️ Usage

usage: helm-upgrade [-h] [--dry-run] chart_path dependencies

Update the dependencies of a local Helm Chart in a project repository.

positional arguments:
  chart_path    Path to the file containing the dependencies of the local Helm Chart to
                be updated.
  dependencies  A dictionary of Helm Chart dependencies and their host repo URLs. E.g.
                '{"nginx-ingress":
                "https://raw.githubusercontent.com/helm/charts/master/stable/nginx-
                ingress/Chart.yaml"}'

optional arguments:
  -h, --help    show this help message and exit
  --dry-run     Perform a dry run of the update. Don't write the changes to a file.

helm-upgrade will then:

  1. read the current versions of your dependencies from the file you specify,
  2. find the latest versions of your desired dependencies from the URLs provided (in JSON schema) to the dependencies argument,
  3. compare whether these versions are equal,
  4. if the versions are not equal (and the --dry-run flag has not been set), your helm chart dependencies will be overwritten with the new chart versions.

☸️ Remote Helm Charts

helm-upgrade currently recognises chart versions from three types of hosts.

  1. A Chart.yaml file from another GitHub repository. These URLs end with "/Chart.yaml".

    For example, https://raw.githubusercontent.com/helm/charts/master/stable/nginx-ingress/Chart.yaml

  2. A repository of chart versions hosted on GitHub pages. These URLs contain "/gh-pages/".

    For example, https://raw.githubusercontent.com/jupyterhub/helm-chart/gh-pages/index.yaml

  3. Versions listed on a GitHub Releases page. These URLs end with "/releases/latest" and uses BeautifulSoup to search the html.

    For example, https://github.com/jetstack/cert-manager/releases/latest

✅ Running Tests

To run the test suite, you must first following the manual installation instructions. Once completed, the test suite can be run as follows:

python -m pytest -vvv

To see code coverage of the test suite, run the following:

python -m coverage run -m pytest -vvv
coverage report

An interactive HTML version of the report can be accessed by running the following:

coverage html

And then opening the htmlcov/index.html file in a browser window.

✨ Contributing

🎉 Thank you for wanting to contribute! 🎉 Make sure to read our Code of Conduct and Contributing Guidelines to get you started.