diff --git a/.circleci/config.yml b/.circleci/config.yml index b554d562..b69c2ab8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,7 +36,7 @@ jobs: - run: name: build docker images and push them to dockerhub command: | - helm_versions=( "v3.4.2" "v3.5.4" "v3.6.3" "v3.7.1" ) + helm_versions=( "v3.5.4" "v3.6.3" "v3.7.2" ) TAG=$(git describe --abbrev=0 --tags) docker login -u $DOCKER_USER -p $DOCKER_PASS diff --git a/.version b/.version index b592e5e4..40c06ccb 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -v3.7.7 +v3.8.0 diff --git a/README.md b/README.md index 48a916db..1a09de3f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![GitHub version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=gh&type=6&v=v3.7.7&x2=0)](https://github.com/Praqma/helmsman/releases) [![CircleCI](https://circleci.com/gh/Praqma/helmsman/tree/master.svg?style=svg)](https://circleci.com/gh/Praqma/helmsman/tree/master) +[![GitHub version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=gh&type=6&v=v3.8.0&x2=0)](https://github.com/Praqma/helmsman/releases) [![CircleCI](https://circleci.com/gh/Praqma/helmsman/tree/master.svg?style=svg)](https://circleci.com/gh/Praqma/helmsman/tree/master) ![helmsman-logo](docs/images/helmsman.png) diff --git a/docs/cmd_reference.md b/docs/cmd_reference.md index e12a7e09..9dc20145 100644 --- a/docs/cmd_reference.md +++ b/docs/cmd_reference.md @@ -77,7 +77,7 @@ This lists available CMD options in Helmsman: `--no-ssm-subst` turn off SSM parameter substitution globally. - `-spec string` + `--spec string` specification file name, contains locations of desired state files to be merged `--subst-ssm-values` diff --git a/docs/how_to/README.md b/docs/how_to/README.md index 94a61370..ffa85185 100644 --- a/docs/how_to/README.md +++ b/docs/how_to/README.md @@ -50,6 +50,7 @@ It is recommended that you also check the [DSF spec](../desired_state_specificat - [Protecting namespaces and releases](misc/protect_namespaces_and_releases.md) - [Send slack notifications from Helmsman](misc/send_slack_notifications_from_helmsman.md) - [Send MS Teams notifications from Helmsman](misc/send_ms_teams_notifications_from_helmsman.md) + - [Use multiple desired state files with Specification file (--spec flag)](misc/multiple_desired_state_files_specification.md) - [Merge multiple desired state files](misc/merge_desired_state_files.md) - [Limit Helmsman deployment to specific apps](misc/limit-deployment-to-specific-apps.md) - [Limit Helmsman deployment to specific group of apps](misc/limit-deployment-to-specific-group-of-apps.md) diff --git a/docs/how_to/misc/multiple_desired_state_files_specification.md b/docs/how_to/misc/multiple_desired_state_files_specification.md new file mode 100644 index 00000000..0de9c740 --- /dev/null +++ b/docs/how_to/misc/multiple_desired_state_files_specification.md @@ -0,0 +1,42 @@ +--- +version: v3.8.0 +--- + +# Specification file + +Starting from v3.8.0, Helmsman allows you to use Specification file passed with `--spec ` flag +in order to define multiple Desired State Files to be merged in particular order and with specific priorities. + +An example Specification file: + +`spec.yaml`: + +``` +--- +stateFiles: + - path: examples/example.yaml + - path: examples/minimal-example.yaml + priority: -10 + - path: examples/minimal-example.toml + priority: -20 + +``` + +This file can be then run with: +```shell +helmsman --spec spec.yaml ... +``` + +What it does is it takes the files from `stateFiles` list and orders them based on their priorities same way it does with the apps in DSF file. +In an example above the result order would be: +``` + - path: examples/minimal-example.toml + - path: examples/minimal-example.yaml + - path: examples/example.yaml +``` +with priorities being `-20, -10, 0` after ordering. + +Once ordering is done, Helmsman will read each file one by one and merge the previous states with the current file it goes through. + +One can take advantage of that and define the state of the environment starting with more general definitions and then reaching more specific cases in the end, +which would overwrite or extend things from previous files. diff --git a/internal/app/main.go b/internal/app/main.go index 5bac94b6..3bf88f83 100644 --- a/internal/app/main.go +++ b/internal/app/main.go @@ -8,7 +8,7 @@ import ( const ( helmBin = "helm" kubectlBin = "kubectl" - appVersion = "v3.7.7" + appVersion = "v3.8.0" tempFilesDir = ".helmsman-tmp" defaultContextName = "default" resourcePool = 10 diff --git a/release-notes.md b/release-notes.md index 0504ef78..9533176d 100644 --- a/release-notes.md +++ b/release-notes.md @@ -1,5 +1,6 @@ -# v3.7.7 +# v3.8.0 ## Fixes and improvements -- feat: Add namespaceLabelsAuthoritative settings option to allow removing undefined ns labels (#631) +- feat: Add skipIgnoredApps settings option to allow ignoring apps not considered when using `-target` or `-group` flag (#634) +- feat: Add Specification file support with `-spec` flag in order to define an environment with multiple Desired State Files (#633)