Introduction CI Tools components catalog¶
This catalog brings components to enterprises to build flexible pipelines for continuous delivery to GitLab. Those pipelines can be used for applications and infrastructure. This model be applicable to teams of developers and operators that ship together.
Design principles¶
The catalog was designed under the following 7 principles:
- Prioritize continuous delivery over continuous deployment. Read
- Infrastructure is delivered with continuous delivery the same way as applications.
- Every web application is running on Kubernetes which should be the current choice for enterprises.
- Web applications in a container shall use technology abstraction like S2I from Red Hat as a stable base.
- Containers shipped via HELM packages to Kubernetes.
- The underlying automation stack is compatible to other automation platforms such as GitHub, Azure DevOps, … .
- Support and consult any enterprises following this pattern.
- Stay opinionated and open for feedback.
Documentation¶
This is a documentation about the CI Tools components catalog.
The contents of this repository are:
- CI/CD library of GitLab Components
- A CI/CD Bash library
It is also available as a PDF Download
Example application pipeline¶
CI Tools pipeline¶
Setup in a self-managed instance¶
- Create a group
xrow-public
in your self-managed instance. - Create a project
ci-tools
in your self-managed instance. - Remove the protected branch
- Setup a repository mirror from
https://gitlab.com/xrow-public/ci-tools.git
with direction pull - Create a own components group for your company e.g.
components
- Create a project
mycompany
incomponents
- Create a new component called
common
by creating the file templates/common/template.yml. Please notice the configuration for the disconnected setup with a external registry.
templates/common/template.yml
spec:
inputs:
registry:
default: "registry.mycompany.com"
repository-path:
default: "xrow-public/ci-tools"
proxy:
default: false
type: boolean
version:
default: main
type: string
---
include:
- component: gitlab.com/xrow-public/ci-tools/common@$[[ inputs.version ]]
inputs:
repo: $[[ inputs.registry ]]/proxy-gitlab/xrow-public/ci-tools
version: $[[ inputs.version ]]
registry: $[[ inputs.registry ]]
repository-path: $[[ inputs.repository-path ]]
stages:
- prepare
- lint
- build
- test
- render
- validate
- deploy
variables:
CI_REGISTRY_IMAGE: "$[[ inputs.registry | expand_vars ]]/$[[ inputs.repository-path | expand_vars ]]"
CI_TEMPLATE_REGISTRY_HOST: $[[ inputs.registry ]]/proxy-gitlab
Now you can use your component instead components/mycompany/common
of xrow-public/ci-tools/common
.