Gitlab CI/CD can do this ?!

Agenda

  1. Introduction
  2. Gitlab walkthrough
  3. Gitlab CI/CD can do this ?!
  4. QA

Introduction

Who am I ?

  • Mohammed Daoudi aka @Iduoad
  • Teaholic Devops Engineer @Nimbleways
  • weCanTalkAbout([๐Ÿง, ๐Ÿณ, ๐ŸฆŠ, …])
  • More about me here !

What is Gitlab ?

  • Gitlab is a code hosting platform.
  • Gitlab is a devops platform.

Gitlab Open *

  • Gitlab is open source
  • Gitlab is openly developed on Gitlab
  • Open Culture (handbook, remote-manifesto, … )

Gitlab Open *

  • Gitlab Open Community (community heros, meetups …)
  • Gitlab is developed by Gitlab in Gitlab

Gitlab Walkthrough

walkthrough

Gitlab CI/CD can do this ?!

2 mins for concepts!

Fast

Pipelines

pipeline

Jobs

jobs

Rules and Conditions

rules

What ?

  • How can we control pipeline and job creation ?
  • only and except are the old way
  • rules is the better way

How ?

๐ŸฆŠ

Why ?

  • Running jobs on merge requests
  • Running jobs on special events
  • Monorepos (changes)
  • Gitflow !

Code reuse

code reuse

What ?

  • include and extends
  • YAML anchors
  • !reference

How ?

๐ŸฆŠ

Why ?

  • Generic jobs
  • Centralized configuration
  • Monorepos

Caching

Caching

What ?

  • How it works ?!
  • Keys and paths
  • Cache policy
  • Multiple caches

How ?

๐ŸฆŠ

Why ?

  • Caching dependencies
  • Caching things that won’t change
  • Caching everything (untracked)

Images and services

images

What ?

  • Gitlab runners with docker executor
  • Images should be the smallest
  • Services !!

How ?

๐ŸฆŠ

Why ?

  • Clean jobs
  • Dependencies included
  • Integration testing

DAG Pipelines

dag

What ?

  • By default jobs depends on all the jobs in the previous stage
  • Fine grained control job dependency.
  • Optional dependencies

How ?

๐ŸฆŠ

Why ?

  • Monorepos
  • Huge pipelines
  • Jobs running on specific branches (optional)

Releases

releases

What ?

  • Releases can be created manually from the UI.
  • gitlab-release-cli comes to the rescue.
  • The release tag make things very easy.

How ?

๐ŸฆŠ

Why ?

  • Releases are crucial for every project.

A lot more!

kubernetes

A lot more!

  • Kubernetes integration
  • Reports
  • Templates
  • Auto-Devops

Thank you

Let’s be friends! ๐Ÿค—