Skip to main content

A Python package for updating the dependencies of a local Helm Chart

Project description

helm-upgrade

PyPI version

Status
CI Tests CI-test
Black Black
Flake8 Flake8

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 HelmUpgradeBot and Chris Holdgraf's github-activity tool.

Table of Contents


:rocket: Installation

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

:snake: pip

pip install helm-upgrade

:wrench: 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.7 is recommended.

python -m pip install -r requirements.txt
python setup.py install

Test the installation by calling the help page.

helm-upgrade --help

:recycle: Usage

usage: helm-upgrade [-h] {version,run} ...
Update the dependencies of a local Helm Chart in a project repository.

positional arguments:
  {version,run}
    version      Print the version and exit
    run          Update the dependencies of a helm chart

optional arguments:
  -h, --help     show this help message and exit
usage: helm-upgrade version [-h]

optional arguments:
  -h, --help  show this help message and exit
usage: helm-upgrade run [-h] [--dry-run] [-v] chart dependencies

positional arguments:
  chart          Name 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.
  -v, --verbose  Option to turn on logging.

Run the CLI in the directory above your local helm chart. For example:

$ ls -R -1

./my-local-helm-chart:
Chart.yaml
README.md
requirements.yaml
templates/
values.yaml

In this example, the name argument would be my-local-helm-chart.

helm-upgrade will then:

  1. read the current versions of your dependencies from your requirements.yaml file,
  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), requirements.yaml will be overwritten with the new chart versions.

The --verbose flag will print logs to the console and the --dry-run flag will skip the file writing step.

:wheel_of_dharma: 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

:sparkles: Contributing

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for helm-upgrade, version 0.0.2
Filename, size File type Python version Upload date Hashes
Filename, size helm_upgrade-0.0.2-py3-none-any.whl (7.8 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size helm-upgrade-0.0.2.tar.gz (9.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page