Parameterize Project Templates
Problem to solve
Custom group-level project templates allow us to quickly instantiate projects according to our company's guidelines. This includes, for example, contribution guides that are compliant to our company's guidelines. However, these templates always make 1:1 copies of the template project. Therefore, manual work is required after instantiating a project to further customize the project. For example, our contribution guide starts with "Contributing to [insert-project-name]". This needs to be changed manually after using the template. Furthermore, the template user needs to know about this hook points or look through every file to find them. This is time-consuming, boring, and there is a high probability of not finding one of these hook-points.
Delaney, Development Team Lead, https://design.gitlab.com/research/personas#persona-delaney
Sasha, Software Developer, https://design.gitlab.com/research/personas#persona-sasha
Basically whoever is responsible for creating new projects in your organization.
- The user does not miss any hook points
- The user saves time by not having to search for hook points
Since the hook-points which need to be replaced are known before instantiating the project, it should be able to fill these out automatically. In Intellij, I can create file templates that include variables which will be requested from the user whenever he or she uses the template(docs). I want to be able to do the same in GitLab, i.e. the files in the project templates
What does success look like, and how can we measure that?
After clicking "create project" a new page should come up. This page should present you a list of requested variables (given that the project uses any) and maybe a short description of each variable. The user should then fill out the values for these variables like he does in the project settings when he sets CI/CD variables. GitLab should then replace each occurrence of these variables in the project template automatically.
The project templates need a page that let the template developer define variables and provide descriptions for each variable.