Instance-level project templates
### Problem to solve Especially in larger projects, setting up new GitLab projects from scratch can be a repetitive task. Often, there is a lot of configuration files and boilerplate required. We already have project templates, but these are GitLab-owned and cannot be customized (refered to as "vendor templates"). A solution to set up project templates based on actual GitLab projects is needed. ### Further details Relevant use cases for project templates on instance-level: - Unchanged, default templates only (you have vendored templates only) - As an admin, add your own templates based on a selected group (have both vendored and custom) - Add additional custom templates - ~~Disable vendored templates (same effect as disable templates)~~ ### Proposal Let's add the option for Administrators to select one group in the GitLab instance that holds GitLab projects that are offered as project templates, when creating a new project. - As an Admin I can select an (one) existing group whose projects should serve as instance-wide project templates - Every project within this group will be available as project template when creating a new project - ~~A new default `_gitlab` group contains the packaged GitLab-delivered project templates~~ - [x] Move into separate issue - As a users I can choose from built-in vendor templates and custom instance-level project templates (if defined) when creating a new project - Template types are separated via individual tabs ### Designs #### Changing template source **Admin area → Settings → Custom project templates** ![set-project-template-source](/uploads/684d25d67ede7cca0c07165837fa26e8/set-project-template-source.png) #### Create project from a template | Built-in | Custom | |----------|--------| | ![new-project--built-in](https://gitlab.com/gitlab-org/gitlab-ce/uploads/299614d9112a499e6a0fe3cea55196a5/new-project--built-in.png) | ![new-project--custom](https://gitlab.com/gitlab-org/gitlab-ce/uploads/84a9ffa129566421ec987b32018f14af/new-project--custom.png) | #### Implementation details - Projects are displayed as templates based on the **default branch** ### What does success look like, and how can we measure that? * If a template group is defined, projects inside this group are made available as project templates when creating a new project. ### Links / references - gitlab-ce#32420 - gitlab-ce#36886
issue