We have a set of microservices stored in multiple repositories which we deploy on k8s. Currently we use a simple cicd which is triggered by commit to repo. The cicd then builds an image, places image tag to values.yaml, deploys same verion of helm chart with updated version of values.yaml. Thats it.
What I dont like about it is:
- we dont have a build's version. we dont know what we test
- we cannot revert to previous build because we simply dont have a concept of build
- we cannot run integration tests on the build because we can only trigger tests on commit to specific repo, not "commit to a build"
How can we do it better?
A possible solution would be to work via parent helm charts, i.e. update version of parent helm chart and deploy and run integration tests only when that parent chart is updated. But how this should be implemented?
Below are my guess:
We can store helm chart in component's repo, build image once commit is done, update helm chart with a second commit with new version and image tag, WAIT until all child helm charts are updated, and then finally make a commit to parent helm chart to update it with new child helm charts version. Looks a bit burdensome.
Any other options?