Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sstarcher/helm-release

Helm Plugin for automatic versioning of helm charts
https://github.com/sstarcher/helm-release

cicd helm-charts helm-plugin jenkins kubernetes

Last synced: 19 days ago
JSON representation

Helm Plugin for automatic versioning of helm charts

Awesome Lists containing this project

README

        

# Helm Release

[![CircleCI](https://circleci.com/gh/sstarcher/helm-release.svg?style=shield)](https://circleci.com/gh/sstarcher/helm-release)
[![GitHub release](https://img.shields.io/github/release/sstarcher/helm-release.svg)](https://github.com/sstarcher/helm-release/releases)

Provides simple semantic versioning based from previous git tags.

This allows you to run a single command and package the next version of your chart. This project allows you to combine your Dockerfile and Helm Chart in a single repository and automatically version the Helm chart on a build.

## Install

You can install a specific release version:

$ helm plugin install https://github.com/sstarcher/helm-release

## Usage

* helm release CHART - Would determine the next tag for the chart and update the Chart.yaml and values.yaml image.tag
* helm release CHART -t 12345 - Would update Chart.yaml and modify values.yaml images.tag to equal 12345
* helm release CHART --print-computed-version - Would determine the next tag and print it to STDOUT
* helm release CHART --skip-application-version - Would determine the next tag for the chart and update the Chart.yaml.

# Source

Helm Release supports different release logic for difference sources

### Helm

When using the `--source helm` you must specify `--bump` of major, minor, or patch.

### Git
#### Release Logic

To describe the release naming process we will use the following nomenclature.
* LAST_TAG - finds the previous tag from the git history using `git describe --tags`
* NEXT_TAG - uses LAST_TAG and increments the patch by 1
* COMMITS - finds the total number of commits using `git describe --tags`
* TAG - is used when COMMITS has a value of 0 as in the current commit has been specifically tagged
* SHA - uses a short git sha using `git rev-parse --short HEAD` with the `g` prefix removed
* BRANCH - finds the current branch name using `git rev-parse --abbrev-ref HEAD`
* overridden using BRANCH_NAME environment variable
* always converted to lowercase
* strips any characters that don't match - https://semver.org/#spec-item-9
* We prefix BRANCH with `0.` to ensure it's the lowest version

The default version for a branch is `NEXT_TAG-0.BRANCH-COMMITS+SHA`

#### Tags

When COMMITS is equal to 0 we assume the intent is to do a release of the current commit and the version will be the tag itself `TAG+SHA`

*NOTE* Tags should be annotated tags and not lightweight tags. Tags created in the Github UI will be lightweight tags by default.

#### Master branch

The master branch is treated differently from the default and will be `NEXT_TAG-COMMITS+SHA`

#### Integrated Support for Jenkins and PR branches

Jenkins uses the environment variable BRANCH_NAME with the value of the PR example `PR-97`. This will result in a release version of `NEXT_TAG-0.pr-97-COMMITS+SHA`

## Install without internet

* Grab the tar file for your system from the [releases](https://github.com/sstarcher/helm-release/releases)
```
$ eval $(helm env) # Get helm environment variable for plugin location $HELM_PLUGINS
$ mkdir /Users/sstarcher/Library/helm/plugins/helm-release
$ tar -xvf DOWNLOADED_TAR_GZ -C /Users/sstarcher/Library/helm/plugins/helm-release
```

## Uninstall

$ helm plugin remove release