Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Gitlab CI + Docker (LinuxDays 2018)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ondrej Sika
October 06, 2018
Programming
290
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gitlab CI + Docker (LinuxDays 2018)
https://ondrej-sika.cz/blog/2018/gitlab-ci-docker-linuxdays/
Ondrej Sika
October 06, 2018
More Decks by Ondrej Sika
See All by Ondrej Sika
ZEIT, Serverless Deployments
ondrejsika
0
110
Introduction to Docker & Kubernetes @ JavaDays 2019
ondrejsika
1
360
Terraform - Infrastructure as a Code
ondrejsika
1
310
TechEd 2018, Introduction to Docker
ondrejsika
0
600
Automation using Gitlab CI and Docker, DevHeaven 2018
ondrejsika
0
240
Lightning Network aneb Bitcoin 2.0, Plzensky Barcamp, 7.4.2018
ondrejsika
0
130
Python Libraries for Bitcoin and Ethereum, PyCon SK 2018
ondrejsika
1
180
i3 tiling window manager, Install Fest 2018
ondrejsika
1
380
Docker, Zlin, 8. 2. 2018
ondrejsika
0
160
Other Decks in Programming
See All in Programming
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
280
Agents on Rails - Rails at Scale 2026
irinanazarova
0
330
iOSDC2026登壇資料.pdf
riofujimon
0
210
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
180
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
100
すこし踏み込む CancellationToken
htkym
2
1.6k
The Rails Doctrine Decade
koic
2
490
速習iPhone Duo対応
yuukiw00w
2
960
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
パーソナライズPodcastを作った話
repunit11
0
120
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
310
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
How to build a perfect <img>
jonoalderson
1
6.1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
460
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
770
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
A Soul's Torment
seathinner
8
3.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
520
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Google's AI Overviews - The New Search
badams
0
1.6k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
Transcript
Ondrej Sika
[email protected]
@ondrejsika Linux Days 2018, Prague, 6. 10.
2018 Gitlab CI + Docker
https://sika.link/linuxdays2018
Goals - Build application - Run tests - Deploy to
staging env.
None
What is CI?
What is CI? In software engineering, continuous integration is the
practice of merging all developer working copies to a shared mainline several times a day.
Usage of CI Automatization of - build process - testing
- deployment - dev - staging - production - code quality - Linting - Formating
Gitlab CI
Gitlab CI Architecture
Gitlab CI Runner GitLab Runner is the tool that is
used to run your jobs and send the results back to GitLab.
Gitlab CI Runner
Gitlab CI Runner Run on: - Linux - Docker -
Windows How to install & configure: - https://docs.gitlab.com/runner/install/ - https://docs.gitlab.com/runner/register/ - https://github.com/ondrejsika/gitlab-ci-runner
Install Gitlab Runner - Linux sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/b
inaries/gitlab-runner-linux-amd64 sudo chmod +x /usr/local/bin/gitlab-runner sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start
Register Gitlab Runner - Linux sudo gitlab-runner register # or
gitlab-runner register --non-interactive \ --url $GITLABCI_URL \ --registration-token $GITLABCI_TOKEN
Install Gitlab Runner - Docker docker run -d \ --name
gitlab-runner \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /builds:/builds \ gitlab/gitlab-runner:latest
Register Gitlab Runner - Docker docker exec -ti gitlab-runner gitlab-runner
register \ --non-interactive \ --url $GITLABCI_URL \ --registration-token $GITLABCI_TOKEN \ --name $(hostname) \ --executor docker \ --docker-image docker:git \ --docker-volumes '/var/run/docker.sock:/var/run/docker.sock' \ --docker-volumes '/builds:/builds'
https://github.com/ondrejsika/gitlab-ci-runner
Done, check out your Gitlab
First Job
First job git clone
[email protected]
:test/test.git cd test vim .gitlab-ci.yml git
add . git commit -m "Add CI script" git push origin master # .gitlab-ci.yml job: script: echo Hello World!
.gitlab-ci.yml
https://docs.gitlab.com/ce/ci/
Jobs - script - when - stages - only &
except - before_job & after_job - retry
Script test1_job: script: echo 'Run test1 ...' test2_job: script: -
echo Run 'test2.1 ...' - echo Run 'test2.2 ...' - echo Run 'test2.3 ...'
Stages stages: - build - test - deploy build_job: stage:
build script: echo 'Building ...' test1_job: stage: test script: echo Run test1 ...' test2_job: stage: test script: echo Run test2 ...'
When cleanup_build_job: script: echo Cleanup build when failed ... when:
on_failure test_job: script: echo Run test ... deploy_job: script: echo Deploy ... when: manual cleanup_job: script: echo Full cleanup ... when: always
Only & Except job: # use regexp only: - /^issue-.*$/
# use special keyword except: - branches
Variables - Secret variables are defined in Gitlab - Some
variables set CI runtime - Public variables are defined in .gitlab-ci.yml
Variables CI CI_PROJECT_NAME, CI_PROJECT_PATH_SLUG CI_COMMIT_REF_NAME, CI_COMMIT_REF_SLUG CI_COMMIT_SHA, CI_COMMIT_TAG CI_PIPELINE_ID, CI_JOB_ID
CI_REGISTRY, CI_REGISTRY_USER, CI_REGISTRY_PASSWORD ... https://docs.gitlab.com/ce/ci/variables/README.html
Variables variables: IMAGE_TAG: myapp:$CI_PIPELINE_ID job: script: docker build -t $IMAGE_TAG
.
Docker - Fully supported - Easiest way how to create
build environment - Easiest way how to run and distribute your software
Docker Environment image: ondrejsika/ci job: image: ondrejsika/ci-go script: go build
server.go
Docker job: script: - docker build -t $IMAGE . -
docker push $IMAGE
Environments Environment is used to define that a job deploys
to a specific environment. If environment is specified and no environment under that name exists, a new one will be created automatically.
Environment deploy: script: echo 'Deploy!' environment: name: $CI_COMMIT_REF_SLUG url: https://$CI_COMMIT_REF_SLUG.example.com
Deployments - Automatic - Manual
Auto vs Manual Deployments auto_deploy_job: script: echo Auto Deploy! environment:
name: deployment-$CI_PIPELINE_ID manual_deploy_job: when: manual script: echo Manual Deploy! environment: name: deployment-$CI_PIPELINE_ID
Stop Deployment deploy_job: stage: deploy script: echo Deploy! environment: name:
deployment-$CI_PIPELINE_ID on_stop: stop_deploy_job stop_deploy_job: stage: deploy script: echo Stop! when: manual environment: name: deployment-$CI_PIPELINE_ID action: stop
Try it!
https://github.com/ondrejsika/linuxdays2018
https://gitlab-demo.xsika.cz/demo/linuxdays2018
Resources - https://about.gitlab.com/features/gitlab-ci-cd/ - https://docs.gitlab.com/ce/ci/ - https://docs.gitlab.com/ce/ci/yaml/ - https://docs.gitlab.com/ce/ci/quick_start/ -
https://ondrej-sika.cz/blog/2018/gitlab-ci-docker-linuxdays/ - https://github.com/ondrejsika/ondrejsika-ci-docker - https://github.com/ondrejsika/traefik-ssl - https://github.com/ondrejsika/gitlab-ci-runner
Thank you & Questions Ondrej Sika email:
[email protected]
web: https://ondrej-sika.cz
twitter: @ondrejsika linkedin: /in/ondrejsika/ https://sika.link/linuxdays2018