Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How can automation help with development practices
Search
PaulRbr
December 06, 2017
Programming
0
16
How can automation help with development practices
PaulRbr
December 06, 2017
Tweet
Share
More Decks by PaulRbr
See All by PaulRbr
A smooth migration to Docker focusing on build pipelines
paulrbr
0
29
Production upgrade of PostgreSQL 9.1 to 9.5
paulrbr
0
36
Other Decks in Programming
See All in Programming
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
620
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
Apache Iceberg V3 and migration to V3
tomtanaka
0
160
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
470
Oxlint JS plugins
kazupon
1
970
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
100
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
120
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
300
Architectural Extensions
denyspoltorak
0
290
Grafana:建立系統全知視角的捷徑
blueswen
0
330
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
140
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Music & Morning Musume
bryan
47
7.1k
A better future with KSS
kneath
240
18k
HDC tutorial
michielstock
1
380
Why Our Code Smells
bkeepers
PRO
340
58k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
Documentation Writing (for coders)
carmenintech
77
5.3k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
Transcript
HOW CAN AUTOMATION HELP WITH DEVELOPMENT PRACTICES
a.k.a LA MÉTHODE DE DEV CHEZ CAPITAINE TRAIN
WHO AM I? ⌨ + ⚙ + ⏸ So ware
Developer ▶ Linux Infra & Ops @paulRb_r
None
autonomy
initiative
empathy
communication
honesty
responsibility
humor
DEVELOPMENT WORKFLOW
Local changes
Pull Request · Merge Request ·
Review
Review
Review
Integration testing ✅
Merge Master
Ship it to Production
TL; DL · Local changes · Pull Request / Merge
Request · Review · ✅ Integration testing · Merge Master · Ship
DUG THE DEVELOPER Willing to contribute code
DUG THE DEVELOPER Working in the 25kv team
DEVELOPMENT WORKFLOW
GIT WORKFLOW
Test Platform
Test Platform Code repository (capitainetrain/25kv)
Test Platform Code repository (capitainetrain/25kv) (dugd/25kv) Local changes
None
Test Platform Code repository (dugd/25kv) (capitainetrain/25kv) Local changes
None
Test Platform Code repository (dugd/25kv) (capitainetrain/25kv) Local changes
None
(dugd/25kv) (capitainetrain/25kv) + Merge Request & Review
None
(dugd/25kv) (capitainetrain/25kv) ✅ Integration testing
None
(dugd/25kv) (capitainetrain/25kv) Merge Master
None
(dugd/25kv) (capitainetrain/25kv) Ship to Production
None
GIT WORKFLOW
BUILD PIPELINE WORKFLOW
BUILD PIPELINE CI WORKFLOW
BUILD PIPELINE CI CD WORKFLOW
BUILD PIPELINE WORKFLOW
None
None
1 commit == 1 pipeline
GITLAB
Open Source ❤
GITLAB · source code · merge request · review ·
CI build pipelines · Artifacts · Docker registry · ...much more
GITLAB CI
Open Source ❤
.gitlab-ci.yml file
versioned within git
declarative
job1: script: make build job2: script: make test
integrated
PIPELINE
1 pipeline == n stages
stages: - build - test - deploy
1 stage == n jobs
job1-unit-test: stage: test job2-acceptance-test: stage: test
1 pipeline == jobs x stages
None
REMEMBER DUG?
None
None
.gitlab-ci.yml image: ruby:2.4
.gitlab-ci.yml image: ruby:2.4 bundle: stage: build script: - bundle install
--deployment artifacts: paths: [ '.bundle/', 'vendor/' ]
.gitlab-ci.yml image: ruby:2.4 bundle: stage: build script: - bundle install
--deployment artifacts: paths: [ '.bundle/', 'vendor/' ] test: stage: test script: - bundle exec rake test
.gitlab-ci.yml image: ruby:2.4 bundle: stage: build script: - bundle install
--deployment artifacts: paths: [ '.bundle/', 'vendor/' ] test: stage: test script: - bundle exec rake test lint: stage: test script: - bundle exec rubocop
.gitlab-ci.yml image: ruby:2.4 # … security: stage: test script: -
bundle exec brakeman
.gitlab-ci.yml image: ruby:2.4 # … security: stage: test script: -
bundle exec brakeman bundle-audit: stage: test script: - bundle exec bundle-audit check --update
+ Merge Request & Review
None
None
None
Review
None
✅
None
.gitlab-ci.yml image: ruby:2.4 deploy:integration: stage: deploy script: - bundle exec
rake deploy env=${CI_COMMIT_REF_NAME} only: - dev
.gitlab-ci.yml image: ruby:2.4 stages: - build - test - deploy
- # Something missing?
.gitlab-ci.yml image: ruby:2.4 stages: - build - test - deploy
- qa
.gitlab-ci.yml image: ruby:2.4 deploy:integration: stage: deploy script: - bundle exec
rake deploy env=${CI_COMMIT_REF_NAME} only: - dev performance: stage: qa script: - bundle exec rake performance \ target="https://${CI_COMMIT_REF_NAME}.test.trainline.eu/" only: - dev
None
None
None
None
None
None
.gitlab-ci.yml image: ruby:2.4 deploy:integration: stage: deploy script: - bundle exec
rake deploy env=${CI_COMMIT_REF_NAME} only: - dev
.gitlab-ci.yml image: ruby:2.4 deploy:integration: stage: deploy script: - bundle exec
rake deploy env=${CI_COMMIT_REF_NAME} only: - dev - master
.gitlab-ci.yml image: ruby:2.4 deploy:integration: stage: deploy script: - bundle exec
rake deploy env=${CI_COMMIT_REF_NAME} only: - dev - master deploy:production: stage: deploy script: - bundle exec rake deploy env=production only: - master when: manual # ← Manual button to trigger Job
None
None
HERITAGE
6 years
None
None
None
mature
None
alive
builds "as code"
for people
Thank you! QUESTIONS? · Slides → · Demo CI →
https://paulrbr.gitlab.io/talks/dev-workflow.html https://gitlab.com/paulrbr/ruby-ci