The Challenge of Repetitive CI YAML
When you define similar jobs (e.g., unit tests, code coverage) across multiple repositories, you often end up duplicating large blocks of configuration:GitLab CI/CD Templates
GitLab provides two primary template categories:- Pipeline Templates
Full end-to-end CI/CD workflows for common project types (Node.js, Ruby on Rails, etc.). - Job Templates
Standalone jobs for tasks like security scans, linting, or Docker builds.
Built-in templates live in the
gitlab-org/gitlab repository. You can also publish your own templates in a dedicated project.Example: Reusing a Node.js Pipeline Template
Team A and Team B share a common Node.js template but customize deployment targets:- Team A
- Registry: Docker Hub
- Deployment: AWS EKS
- Team B
- Registry: Google Container Registry
- Deployment: GKE
script overrides.

Key Takeaways
- Reusable templates accelerate onboarding and ensure best practices.
- Modular design lets teams opt into only the stages they require.
- Customization points (variables,
before_script,after_script) handle project-specific needs.
Types of Includes
GitLab CI/CD supports four include sources:When using
local includes, the default branch is HEAD. Specify ref if you need a different branch or tag.Conditional Includes
You can apply includes only under specific conditions usingrules: