2. My experience
- I started with machine code and punched cards. I used to write on
Assembler, then on C and Pascal, С++, Delphi, C#, Javascript, and
some other scripting languages. Now I mostly write on Java, and I’m
pretty much happy with that.
- DOS (it was a wonderful to have 21h interrupt), OS/2, QNX,
Windows (my favorite so far), Linux (and Yocto as well), MacOS/iOS.
- I studied at university but I still haven't defended my thesis (and I'm
not planning on doing this anytime soon). I keep learning new things
during my work.
- I was writing, designing, engineering, managing and solving
problems.
- Married, children, cat.
3. HYS Enterprise is a Dutch software
development company with more than
200 talented engineers
from all over the world
hys-enterprise.com
4. Agenda
- What is CI/CD and when should we configure it?
- GitLab, after all
- Basic concepts
- Settings for your project
- Real-life example
5. What is CI/CD and when should
we configure it?
Continuous integration (CI) is the practice of merging all developer working copies to a shared
mainline several times a day. Extreme programming (XP) adopted the concept of CI and did advocate
integrating more than once per day – perhaps as many as tens of times per day.
Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles,
ensuring that the software can be reliably released at any time and, when releasing the software, doing so manually. It aims at
building, testing, and releasing software with greater speed and frequency. The approach helps reduce the cost, time, and risk of
delivering changes by allowing for more incremental updates to applications in production. A straightforward and repeatable
deployment process is important for continuous delivery.
6. GitLab, after all
GitLab is the first single application built from the ground up for all stages of the
DevOps lifecycle for Product, Development, QA, Security, and Operations
teams to work concurrently on the same project.
GitLab enables teams to collaborate and work from a single conversation,
instead of managing multiple threads across disparate tools.
GitLab provides teams a single data store, one user interface, and one
permission model across the DevOps lifecycle allowing teams to collaborate,
significantly reducing cycle time and focus exclusively on building great
software quickly.
7. GitLab, after all - 2
GitLab is a web-based Git-repository manager providing
wiki, issue-tracking and CI/CD pipeline features, using an
open-source license, developed by GitLab Inc. The
software was created by Dmitriy Zaporozhets and Valery
Sizov in 2013, and is used by several large tech
companies including IBM, Sony, Jülich Research Center,
NASA, Alibaba, Invincea, O’Reilly Media, Leibniz-
Rechenzentrum (LRZ), CERN, etc...
The current technology stack includes Ruby on Rails and
Vue.js
8. Basic concepts
.gitlab-ci.yml file contains rules to run pipeline on git-push.
A pipeline is a group of jobs that get executed in stages.
A stages is used to define stages that can be used by jobs.
A job is basic entity which make useful work.
A runner is service on some machine (docker), which runs jobs.
9. Settings for your project
● Does your project really need CI/CD?
● Which stages your project has? (for example: build, test, deploy, release)
● Which variables can be selected? (for example: FTP, creds, Git opts, etc…)
● What actions are common and can be extracted as templates (sub-proc)?
● Which environments and clusters do you have? How we can mark them (tags)?
● Which artefacts do we need to store between jobs and save after?
● What is dependencies between your repositories? And do we need to run pipeline from other
pipeline?
● Do we need integration with other products?
10. Real-life example
● Stages
● Variables
● Sample of template
● Sample of build job with artifacts
● Sample of getting external resources from other repo
● Sample of DB tuning
● Running Sonarqube
11. Real-life example - 2
● How to skip a job
● Run pipeline from other pipeline
● Upload with Maven and FTP
● Manual vs Automatic jobs