Skip to content

Quality assurance for Helm charts and chart repositories

Notifications You must be signed in to change notification settings

serviceprototypinglab/helmqa

Repository files navigation

HelmQA - Quality and consistency checks of Helm charts
(originally: "similaritymetrics" to compare Helm charts semantically)

--------------------------------------------------------------------------------------------------------------------
Installation:

Clone the repository:
git clone https://github.com/serviceprototypinglab/helmqa && cd helmqa

Run the following to create and activate a virtual environment and install all the dependencies:
virtualenv .env && source .env/bin/activate && pip install -r requirements.txt

And to start the server:
chmod +x helmqa.sh && ./helmqa.sh

From Docker container:

Build:
docker build -t helmqa .

Run in client (CI/CD) mode with web service interface (see API description below):
docker run -ti -p 5000:5000 helmqa

Run in debug and research modes: Add -s (shell), -r (research)

Run in local Helm chart check mode: add -v $PWD:/charts
--------------------------------------------------------------------------------------------------------------------
This directory is a collection of Helm chart analysis scripts and reference
data produced by the scripts on KubeApps Hub in May 2018. The following list
describes which files are used how.

The marker '#' stands for files generated by scripts which are not meant to be in the repository.

README                                  this file
INSTALL                                 rudimentary installation instructions
TODO                                    requests for improvements

Dockerfile                              container image build script

main.py                                 example showing how to download and extract charts

bucket.py                               downloads all stable charts -> _charts, _templates

authorset.py                            produces maintainer-chart relationship data
authorsets_*.json               #       structured maintainer and chart data extracted from charts
authorsets.{dot,png,pdf}        #       visual representation of relationship graphs
authorsets-heatmap.png          #       correlation graph
authorsets-email.csv            #       hand-crafted data containing issue per email distribution
authorsets-email-plot.py                plot graph about email issue distribution

changerates.py                          analyses longtermtracking and extracts change rate data
                                        (including 4 sub commands: tracking, extraction of key metrics,
                                        accumulation, unique charts identification)
changerates.csv                 #       change rate timeline across all charts
changerates-charts.txt          #       change rate/activity per chart
changerates-allscripts.sh               convenience script to post-process changerages.csv
changerates-plot.py                     produce changerate rates + accumulated changerate figures
changerates-plot.png            #       figure
changerates-total.csv           #       accumulated data containing number of charts timeline
changerates-total-plot.png      #       figure

dupestats.py                            statistics about duplicate values
dupestats_charts.json           #       structured chart/template data extracted from charts
rewriter.py                             rewrite helm charts and produce diffs with suggestions

lintersummary.sh                        statistics about helm linting

learnvariability.py                     learn about variable values -> chartsubs.yaml
applyvariability.py                     apply knowledge base to update descriptors/rendered templates
chartsubs.yaml                  #       knowledge base
variabilitystats.py                     statistics about knowledge base
variabilitydupestats.csv        #       hand-crafted data containing output from variable/duplicate stats
variabilitydupestats-plot.py            plot graph about variability and duplicate value distribution

helmqaweb.py                            serve web reports
helmqaweb.sh                            convenience start script which serves off generated data

_*                              #       sample and reference data (if present)
.log                            #       log files (if present)
--------------------------------------------------------------------------------------------------------------------
API Reference:

By git repository:
    Description: You can call by git repository URL. API responds with status, code, and list of issues with the chart(s) in the repository.
    API call:
        - helmqa.com/livecheck?repo={git repository url}
        Parameters:
            repo: URL to git repository where Helm charts are stored
        An example of an API call:
            helmqa.com/livecheck?repo=https://github.com/mohammed-ali-1/zhaw-charts.git


About

Quality assurance for Helm charts and chart repositories

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published