Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
110
開発に寄りそう自動テストの実現
goyoki
2
1.4k
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3k
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
2
570
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
130
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
0
270
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
3
1.1k
GoLab2025 Recap
kuro_kurorrr
0
780
Cell-Based Architecture
larchanjo
0
140
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
140
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Making Projects Easy
brettharned
120
6.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
130
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
130
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Why Our Code Smells
bkeepers
PRO
340
57k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
310
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
72
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