Gitlab CI/CD can do this ?!
Agenda
- Introduction
- Gitlab walkthrough
- Gitlab CI/CD can do this ?!
- QA
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 Open Community (community heros, meetups β¦)
- Gitlab is developed by Gitlab in Gitlab
Gitlab Walkthrough

Gitlab CI/CD can do this ?!
2 mins for concepts!

Pipelines

Jobs

Rules and Conditions

What ?
- How can we control pipeline and job creation ?
only
and except
are the old wayrules
is the better way
Why ?
- Running jobs on merge requests
- Running jobs on special events
- Monorepos (
changes
) - Gitflow !
- β¦
Code reuse

What ?
include
and extends
- YAML anchors
!reference
Why ?
- Generic jobs
- Centralized configuration
- Monorepos
- β¦
Caching

What ?
- How it works ?!
- Keys and paths
- Cache policy
- Multiple caches
Why ?
- Caching dependencies
- Caching things that wonβt change
- Caching everything (
untracked
) - β¦
Images and services

What ?
- Gitlab runners with docker executor
- Images should be the smallest
- Services !!
Why ?
- Clean jobs
- Dependencies included
- Integration testing
- β¦
DAG Pipelines

What ?
- By default jobs depends on all the jobs in the previous stage
- Fine grained control job dependency.
- Optional dependencies
Why ?
- Monorepos
- Huge pipelines
- Jobs running on specific branches (optional)
- β¦
Releases

What ?
- Releases can be created manually from the UI.
- gitlab-release-cli comes to the rescue.
- The release tag make things very easy.
Why ?
- Releases are crucial for every project.
- β¦
A lot more!

A lot more!
- Kubernetes integration
- Reports
- Templates
- Auto-Devops
- β¦
Thank you
Letβs be friends! π€
Gitlab CI/CD can do this ?!