Skip to content

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
    • 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

Create project from a template

Built-in Custom
new-project--built-in new-project--custom

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

Edited by Andreas Kämmerle