Add code for generating Markdown changelogs
What does this MR do?
This adds the basic building blocks for generating changelogs from a list of commits. The output is Markdown, and each release section is generated using a minimal, custom template language.
In an early iteration we used Liquid, but this was found to suffer from unresolved security issues. Alternative template languages had their own share of issues that made using them not an option. The template engine introduced in this commit is the bare minimum that we need for changelog generation, and works by compiling the user provided template to an ERB template; making sure the user can't run arbitrary code. Using ERB allows us to offload the heavy lifting of a template engine to ERB, instead of having to write and maintain such an engine ourselves.
The use of a template engine gives users control over how they want to present their changelog data, without GitLab having to provide potentially dozens of settings to enable this.
This builds on the changes introduced in merge requests !49243 (merged) and gitaly!2842 (merged).
See gitlab-com/gl-infra/delivery#1369 (closed) for more information.
This closes gitlab-com/gl-infra/delivery#1371 (closed), gitlab-com/gl-infra/delivery#1369 (closed), gitlab-com/gl-infra/delivery#1370 (closed)
TODO
-
Add RSpec tests
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entryNot visible to the user/backstage only for now -
Documentation (if required)see above -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content