Group level required CI jobs (group level required include:)

Problem to solve

As a followup to https://gitlab.com/gitlab-org/gitlab-ee/issues/8429, we want to expand that functionality to be available at the group owner level. That will enable groups on an instance (and on GitLab.com) to take advantage of this feature

Intended users

  • DevOps Engineer
  • Development Team Lead

Further details

This contributes to our vision enabling users of GitLab.com to take advantage of #8429 (closed).

In addition, this feature will leverage the exisiting include functionality in GitLab to combine the required yaml with the yaml from the project. That means that any conflicting job names or other items will result in a linting error for the user.

Proposal

Add a group administration item (available to owner only) for Group template repository similar to the instance template repostiory. This will:

  • Allow for the owner of the group to select a project within that group to be the template repository for the group
  • Each of the template repository features are then "merged" with the instance and build in templates
    • Dockerfiles show both instance and group level templates
    • .gitignore files show both instance and group level templates
    • .gitlab-ci.yml files show both instance and group level templates
    • LICENSE files show both instance and group level templates
    • Required .yml includes are included from both the instance and group level (from #8429 (closed))
  • If required (or desired from UX) this might be only at "top-level" groups just like Billing

Mockup

image

Permissions and Security

This requires group ownership.

Documentation

Testing

What does success look like, and how can we measure that?

  • When there is both an instance and group template repository, each feature should be additive (both templates, both included required .yml, etc.)

What is the type of buyer?

Same as #8429 (closed), Director for DevOps, etc. and thus this is GitLab Premium only.

Links / references

Edited by Brendan O'Leary