Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 2 months ago
JSON representation
Helm Plugin for automatic versioning of helm charts
- Host: GitHub
- URL: https://github.com/sstarcher/helm-release
- Owner: sstarcher
- License: apache-2.0
- Created: 2018-03-26T17:38:58.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-26T15:43:16.000Z (over 4 years ago)
- Last Synced: 2024-06-20T13:37:56.939Z (6 months ago)
- Topics: cicd, helm-charts, helm-plugin, jenkins, kubernetes
- Language: Go
- Size: 1.29 MB
- Stars: 69
- Watchers: 5
- Forks: 16
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 LogicTo 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 versionThe 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