Inject Auto Deploy Helm chart into project
The original idea for Auto Deploy was to have a button to make a bunch of file changes in a branch. It turned out to be unnecessary as we reduced everything down to a single
.gitlab-ci.yml that referenced an external Docker image. We want to remove some of the opaqueness in that Docker image by moving most of the content to the
.gitlab-ci-yml itself (#29412 (closed)), and leverage an external Helm chart. Unfortunately, that is still a bit opaque, and doesn't make it easy for people to learn from the Helm chart and augment it. We should reconsider how to inject the Helm chart into the project for you.
As an alternative, we could consider how to make it easier to fork the helm chart, but my current belief is that it is easier to get started with the Helm chart in your project's repo, where it's tied closely with your codebase. Having an external chart may be a best practice, but it's harder to get started. And in our particular case, it would take a fair amount of effort to make it easy to fork, publish, and consume.
One problem with injecting the Helm chart is that it's not a single file. It's a directory of several files and sub-directories.
- Go back to the original idea where the
Set up Auto Deploybutton adds multiple files and creates a MR for you.
- Extend our existing file-based template mechanism to support adding multiple tiles at once, and treat adding the Helm chart as an orthogonal action to enabling Auto Deploy. e.g. You can enable Auto Deploy with or without the Helm chart. Adding the Helm chart could be a second (or later) step in the demo/tutorial.
One real downside to the directory based template mechanism is that our current system lets you pick a template file and then edit it right away. GitLab does not have any way to edit a collection of files and save in a single commit. So I'm guessing that if we want a button to add the helm chart, it's still going to have to inject them directly into a branch/MR, regardless of whether it's from the
Set up Auto Deploy button or a separate button.
Links / references
(Write the start of the documentation of this feature here, include:
- Why should someone use it; what's the underlying problem.
- What is the solution.
- How does someone use this
During implementation, this can then be copied and used as a starter for the documentation.)