• Post category:StudyBullet-13
  • Reading time:8 mins read


Covering all major features of GitLab CICD, enabling you to create efficient configuration file from scratch

What you will learn

How to use GitLab for creating projects. By end of this tutorial you will know everything needed for using GitLab.

How to setup CICD jobs for your project to automate testing and deployment via runners.

Gitlab-ci .yml file comcepts- pipelines, jobs, artifacts, caching, variables, before script, after script

CICD Runners basics, setting up self hosted runners , tagging runners, runner setting for number of jobs, timeout, etc

Optimising configuration. Inheriting yaml from other projects and reusing template jobs, reducing redundancy. Usage of Extends and Include concepts.

Industry examples like linting, unit testing, end to end testing of projects for making sure that the project is stable

Managing multi repo CICD with downstream pipelines. Calrity on parent-child and multi-project pipelines.

Yolov3 face detection project creation with CICD jobs for lint check anf pytest with artifacts

Description

This course provides an in-depth understanding of various topics around CICD for you to develop efficient pipelines for their projects. The course starts with basics about CICD and then covers topics that are needed for typical industrial applications. Many of the jobs explained here can be simply copy-pasted to your projects to serve the purpose, for other jobs you will be expert enough to implement them yourself with the understanding of various concepts for creating jobs. The related code will be available for your reference.

Industrial examples are covered so that you will get an introduction to typical CICD jobs and their relevance in making projects stable and deployments or delivery fast. You should try out these examples in order to truly master it.

My policy is to make things simple and always have simple examples on each topic for a quick understanding of the concept and then build on top of it as we progress. CICD is a blessing when it comes to ensuring code stability, I will be covering how to set up tests such that this code stability is achieved. There are a lot of videos on YouTube as well on topics covered here, but most likely you will be on top of it by the time you have gone through this tutorial.


Get Instant Notification of New Courses on our Telegram channel.


Every developer should master CICD, not only DevOps engineers so that everyone can contribute to code stability, quality of code, automating any repetitive jobs, and delivering in an agile fashion. There is a learning curve involved in understanding how to set up decent CICD for a complex project and this tutorial is intended to make this learning easier. Learn the best practices and apply them in your projects, it will help your organization and yourself in moving to the next level of development and delivery.

For further exploration of features, you can refer to the official documentation of GitLab. I will be covering how I typically start implementing a new challenging CICD job, avoiding complicated scripts as complicated jobs are hard to read and hard in maintaining as well, eventually leading to the removal of that job, wasting time and effort. Simple jobs are the key to maintainable configuration files.

Towards the end of tutorial, there is a case study of Yolov3 based face detection in GitLab with CICD. It will help in understanding real world CICD requirements.

English
language

Content

Introduction to SDLC, Agile and CICD

Introduction
What is SDLC?
Waterfall and Agile SDLC Models
What is CICD?
Gitlab or Github?
SDLC

Setting up CICD for a sample repo in GitLab using Cloud Runners

GitLab account creation
Creating a sample project from scratch
Creating a simple CICD from scratch
Lint, run and deploy demo jobs intro
CICD configuration creation from scratch
CICD Jobs

Self hosted CICD Runner: Installing in your laptop and running a sample job

Download runner application
Install GitLab Runner in your machine!
Run a job in self hosted runner
When should we opt for self hosted runner?

Optimizing CICD jobs via Anchors, Include and Extends features

Anchors, extends, include, reference tags
Hands-on on yaml optimisation- anchors and extends
Hands-on of include and reference tags
Optimising the given configuration

Industry example of CICD jobs: Linting, Unit Testing, End to End Testing

Introduction to Linting, Unit test and End to End test
Coding up Linting, Unit test and End to End test jobs

Downstream Pipelines: Parent-Child and Multi Project Pipelines

What is Downstream pipeline? What is parent-child pipeline?
Trigger Keyword Understanding
Hands-on on Parent-Child Pipeline
Multi-Project Pipeline
Multi-Project Pipelines Hands-on
Conclusion of tutorial

Extras: Industrial Example- Yolov3 face detection with Docker CICD

Face detection using Yolov3 – introduction
Tensorflow version change related bug fixes to run face detector
Push code to GitLab repo
Adding a simple Docker CICD to repo
Fixing Tensorflow version issue in CICD
CV2 import issue fix in CICD
ChatGpt help for fixing cv2 import issue in docker runner
CICD run job passed with artifacts
Pytest job addition to repo for model conversion and face detection
Pylint job addition for conversion, face detection and test files
Pytest and Pylint install fix in docker CICD jobs
Scheduled jobs and conclusion of this handson case study