Skip to content

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 in components
  • 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.