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
It's recommended to use Python version 3.8 with this tool.
pip install helm-upgrade
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: 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:
- read the current versions of your dependencies from the file you specify,
- find the latest versions of your desired dependencies from the URLs provided (in JSON schema) to the
dependencies
argument, - compare whether these versions are equal,
- 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.
helm-upgrade
currently recognises chart versions from three types of hosts.
-
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
-
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
-
Versions listed on a GitHub Releases page. These URLs end with "
/releases/latest
" and usesBeautifulSoup
to search the html.For example, https://github.com/jetstack/cert-manager/releases/latest
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.
🎉 Thank you for wanting to contribute! 🎉 Make sure to read our Code of Conduct and Contributing Guidelines to get you started.