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
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
140
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
220
Go コードベースの構成と AI コンテキスト定義
andpad
0
140
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
460
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
160
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.4k
AtCoder Conference 2025
shindannin
0
680
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
290
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
190
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
190
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
980
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
How GitHub (no longer) Works
holman
316
140k
BBQ
matthewcrist
89
9.9k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
260
The Curse of the Amulet
leimatthew05
0
4.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
760
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
57
40k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
94k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
0
170
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
210
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