SlideShare a Scribd company logo
@raquelpau @alexsotob#Voxxed
Controlling Technical Debt with
Continuous Delivery
Raquel Pau - Alex Soto
WalkMod - RedHat
WA L K M O D F O U N D E R
B E S T P R A C T I C E S E N T H U S I A S T
@ R A Q U E L PA U
R A Q U E L PA U
R E D H AT E N G I N E E R
O P E N S O U R C E A D V O C AT E
@ A L E X S O T O B
A L E X S O T O
Q U E S T I O N S
S O F T WA R E I S
E AT I N G T H E W O R L D
FASTER
SOONER
BETTER
W H AT I S
C O N T I N U O U S D E L I V E RY ?
D E L I V E R B U S I N E S S VA L U E
M O R E F R E Q U E N T LY
O R C H E S T R AT I N G
T H E B U I L D
M I C R O S E R V I C E S
A N D
C O N T I N U O U S D E L I V E RY
N O M O R E
J O B S P L E A S E
P I P E L I N E
A S C O D E
F E AT U R E S O F P I P E L I N E E C O S Y S T E M
Configuration in Source Repository
Less click-and-type, more code
From simple to complex
Survives Jenkins restarts & connection losses
Reusable definitions
Build history/trend segregated per branches
pipeline {
agent any
stages {
stage('Test') {
steps {
sh './gradlew check'
}
}
}
post {
always {
junit 'build/reports/**/*.xml'
}
}
}
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v "$PWD":/usr/src/mymaven -w /usr/src/mymaven’
}
}
stages {
stage('Example Build') {
steps {
sh 'mvn -B clean verify'
}
}
}
}
stage('Deploy - Staging') {
steps {
sh './deploy staging'
sh './run-smoke-tests'
}
}
post { (TODO test)
failure {
mail to: 'team@example.com',
subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
body: "Somethig is wrong with ${env.BUILD_URL}"
}
}
stage('Sanity check') {
steps {
input "Does the staging environment look ok?"
}
}
T W O - P I Z Z A T E A M S
Fabric 8: Features
Create
Build
Release
Runtime
Manage
Feedback
Platform
wizards to create microservices
packaging into multiple container images
rolling upgrades across teams environments
service discovery, scaling, failover, load balancing
centralise logs, metrics, alerts, tracing, circuit breaker
dashboards and metrics to get feedback
on premise, public or hybrid cloud
D I V E R S I F I E D T E A M S
A N D O N E D AY…
T E C H N I C A L D E B T S TA RT E D
T O R E D U C E D E B T
W E N E E D
M E T R I C S A N D T O O L S
feature#1234
feature#1354
C O N T I N U O U S I N S P E C T I O N
@SupressWarnings(“PMD”)
mvn pmd:check
M A N Y
C O D I N G S T Y L E R U L E S A R E
A U T O M AT I C A L LY F I X E A B L E
mvn walkmod:patch
gradle walkmodPatch
I T I S A L L A B O U T
C O D E T R A N S F O R M AT I O N S
public void visit(ImportDeclaration n, VisitorContext vc) {
if (n.getUsages().isEmpty()){
n.remove();
}
}
* K I L L E R F E AT U R E *
F O R M AT P R E S E R VAT I O N
T R U S T T O O L S
O R
E N S U R E T E S T C O V E R A G E
F I X - U P S R E C I P E
mvn walkmod:patch
git apply walkmod.patch
mvn test
git commit -a —fixup HEAD
git pull —rebase origin $branch
git push origin HEAD:$branch
feature#1354
git commit -a --fixup HEAD
C O N T I N U O U S F I X I N G S
P I P E L I N E L I B R A RY
#!groovy
@Library('github.com/walkmod/jenkins-pipeline-shared@maven')
…
stage('Fixing Release') {
steps {
walkmodApply(
validatePatch: false,
branch:'master',
alwaysApply: true,
alwaysFail: true )
}
}
WA L K M O D P I P E L I N E A P I
walkmodApply: fixes your build
hasWalkmodPatch: checks if there are fixings
applyWalkModPatch: applies the patch
pushWalkModPatch : pushes the patch
D E M O
I N C R E M E N TA L E X E C U T I O N
M I C R O - S E R V I C E S - S TA RT I T N O W
L E G A C Y C O D E - A P P LY T H E M I N C R E M E N TA L LY
WA L K M O D H U B
Q U E S T I O N S

More Related Content

What's hot

톰캣 #05+a-배치-parallel deployment
톰캣 #05+a-배치-parallel deployment톰캣 #05+a-배치-parallel deployment
톰캣 #05+a-배치-parallel deployment
GyuSeok Lee
 
{{components deepDive=true}}
{{components deepDive=true}}{{components deepDive=true}}
{{components deepDive=true}}
raytiley
 
Functional Programming in Groovy
Functional Programming in GroovyFunctional Programming in Groovy
Functional Programming in Groovy
Evgeny Goldin
 
An introduction to the MicroProfile
An introduction to the MicroProfileAn introduction to the MicroProfile
An introduction to the MicroProfile
Alex Soto
 
톰캣 #05-배치
톰캣 #05-배치톰캣 #05-배치
톰캣 #05-배치
GyuSeok Lee
 
10reasons
10reasons10reasons
10reasons
Li Huan
 

What's hot (6)

톰캣 #05+a-배치-parallel deployment
톰캣 #05+a-배치-parallel deployment톰캣 #05+a-배치-parallel deployment
톰캣 #05+a-배치-parallel deployment
 
{{components deepDive=true}}
{{components deepDive=true}}{{components deepDive=true}}
{{components deepDive=true}}
 
Functional Programming in Groovy
Functional Programming in GroovyFunctional Programming in Groovy
Functional Programming in Groovy
 
An introduction to the MicroProfile
An introduction to the MicroProfileAn introduction to the MicroProfile
An introduction to the MicroProfile
 
톰캣 #05-배치
톰캣 #05-배치톰캣 #05-배치
톰캣 #05-배치
 
10reasons
10reasons10reasons
10reasons
 

Viewers also liked

BarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformationsBarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformations
walkmod
 
Sonar rules in action with walkmod
Sonar rules in action with walkmodSonar rules in action with walkmod
Sonar rules in action with walkmod
Raquel Pau
 
Pentaho BigDataParis_session_20170306
Pentaho BigDataParis_session_20170306Pentaho BigDataParis_session_20170306
Pentaho BigDataParis_session_20170306
Sebastien COGNET
 
Un 2016 da record per l’interscambio economico tra Italia e Germania
Un 2016 da record per l’interscambio economico tra Italia e GermaniaUn 2016 da record per l’interscambio economico tra Italia e Germania
Un 2016 da record per l’interscambio economico tra Italia e Germania
Joerg Buck
 
Cashgate Scandal Malawi: Different Types Of Fashion Styles
Cashgate Scandal Malawi: Different Types Of Fashion StylesCashgate Scandal Malawi: Different Types Of Fashion Styles
Cashgate Scandal Malawi: Different Types Of Fashion Styles
Joseph Jacob Esther
 
ACCIONA Reports 65
ACCIONA Reports 65ACCIONA Reports 65
ACCIONA Reports 65
acciona
 
How i became a data scientist
How i became a data scientistHow i became a data scientist
How i became a data scientist
Owen Zhang
 
Configuring a Secure, Multitenant Cluster for the Enterprise
Configuring a Secure, Multitenant Cluster for the EnterpriseConfiguring a Secure, Multitenant Cluster for the Enterprise
Configuring a Secure, Multitenant Cluster for the Enterprise
Cloudera, Inc.
 
IPv6セキュリティ はじめの一歩
IPv6セキュリティ はじめの一歩IPv6セキュリティ はじめの一歩
IPv6セキュリティ はじめの一歩
Kenji Ohira
 
研究発表を準備する
研究発表を準備する研究発表を準備する
研究発表を準備する
Takayuki Itoh
 
what3words brochure
what3words brochurewhat3words brochure
what3words brochure
what3words
 
Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival
Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival
Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival
Kelan tutkimus / Research at Kela
 
Win politics 2 (ankit tiwari's quotes on politics)
Win politics   2 (ankit tiwari's quotes on politics)Win politics   2 (ankit tiwari's quotes on politics)
Win politics 2 (ankit tiwari's quotes on politics)
ankit tiwari
 
Mimstris: Building an arcade puzzle game in React / Redux
Mimstris: Building an arcade puzzle game in React / ReduxMimstris: Building an arcade puzzle game in React / Redux
Mimstris: Building an arcade puzzle game in React / Redux
Mims H Wright
 
Faire du e-commerce en France avec WordPress
Faire du e-commerce en France avec WordPressFaire du e-commerce en France avec WordPress
Faire du e-commerce en France avec WordPress
corsonr
 
What's new in SQL Server 2016
What's new in SQL Server 2016What's new in SQL Server 2016
What's new in SQL Server 2016
James Serra
 
えだまめ作戦【CanSat】
えだまめ作戦【CanSat】えだまめ作戦【CanSat】
えだまめ作戦【CanSat】
j_rocket_boy
 
フロントエンドフレームワークの選び方 - 20170320
フロントエンドフレームワークの選び方 - 20170320フロントエンドフレームワークの選び方 - 20170320
フロントエンドフレームワークの選び方 - 20170320
Shinichi Takahashi
 
Análisis de GoogleBot con Google Analytics por Lino Uruñuela
Análisis de GoogleBot con Google Analytics por Lino UruñuelaAnálisis de GoogleBot con Google Analytics por Lino Uruñuela
Análisis de GoogleBot con Google Analytics por Lino Uruñuela
Natzir Turrado
 
DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...
DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...
DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...
Marcial Pons Argentina
 

Viewers also liked (20)

BarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformationsBarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformations
 
Sonar rules in action with walkmod
Sonar rules in action with walkmodSonar rules in action with walkmod
Sonar rules in action with walkmod
 
Pentaho BigDataParis_session_20170306
Pentaho BigDataParis_session_20170306Pentaho BigDataParis_session_20170306
Pentaho BigDataParis_session_20170306
 
Un 2016 da record per l’interscambio economico tra Italia e Germania
Un 2016 da record per l’interscambio economico tra Italia e GermaniaUn 2016 da record per l’interscambio economico tra Italia e Germania
Un 2016 da record per l’interscambio economico tra Italia e Germania
 
Cashgate Scandal Malawi: Different Types Of Fashion Styles
Cashgate Scandal Malawi: Different Types Of Fashion StylesCashgate Scandal Malawi: Different Types Of Fashion Styles
Cashgate Scandal Malawi: Different Types Of Fashion Styles
 
ACCIONA Reports 65
ACCIONA Reports 65ACCIONA Reports 65
ACCIONA Reports 65
 
How i became a data scientist
How i became a data scientistHow i became a data scientist
How i became a data scientist
 
Configuring a Secure, Multitenant Cluster for the Enterprise
Configuring a Secure, Multitenant Cluster for the EnterpriseConfiguring a Secure, Multitenant Cluster for the Enterprise
Configuring a Secure, Multitenant Cluster for the Enterprise
 
IPv6セキュリティ はじめの一歩
IPv6セキュリティ はじめの一歩IPv6セキュリティ はじめの一歩
IPv6セキュリティ はじめの一歩
 
研究発表を準備する
研究発表を準備する研究発表を準備する
研究発表を準備する
 
what3words brochure
what3words brochurewhat3words brochure
what3words brochure
 
Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival
Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival
Uudistuva omaishoito uusiin rakenteisiin - kahden vuoden taival
 
Win politics 2 (ankit tiwari's quotes on politics)
Win politics   2 (ankit tiwari's quotes on politics)Win politics   2 (ankit tiwari's quotes on politics)
Win politics 2 (ankit tiwari's quotes on politics)
 
Mimstris: Building an arcade puzzle game in React / Redux
Mimstris: Building an arcade puzzle game in React / ReduxMimstris: Building an arcade puzzle game in React / Redux
Mimstris: Building an arcade puzzle game in React / Redux
 
Faire du e-commerce en France avec WordPress
Faire du e-commerce en France avec WordPressFaire du e-commerce en France avec WordPress
Faire du e-commerce en France avec WordPress
 
What's new in SQL Server 2016
What's new in SQL Server 2016What's new in SQL Server 2016
What's new in SQL Server 2016
 
えだまめ作戦【CanSat】
えだまめ作戦【CanSat】えだまめ作戦【CanSat】
えだまめ作戦【CanSat】
 
フロントエンドフレームワークの選び方 - 20170320
フロントエンドフレームワークの選び方 - 20170320フロントエンドフレームワークの選び方 - 20170320
フロントエンドフレームワークの選び方 - 20170320
 
Análisis de GoogleBot con Google Analytics por Lino Uruñuela
Análisis de GoogleBot con Google Analytics por Lino UruñuelaAnálisis de GoogleBot con Google Analytics por Lino Uruñuela
Análisis de GoogleBot con Google Analytics por Lino Uruñuela
 
DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...
DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...
DE LA PRUEBA CIENTÍFICA A LA PRUEBA PERICIAL. Autora: Carmen Vázquez.ISBN:978...
 

Similar to Controlling Technical Debt with Continuous Delivery

Testing TYPO3 Applications
Testing TYPO3 ApplicationsTesting TYPO3 Applications
Testing TYPO3 Applications
André Wuttig
 
PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner
Neotys
 
iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기
Wanbok Choi
 
Svelte (adjective): Attractively thin, graceful, and stylish
Svelte (adjective): Attractively thin, graceful, and stylishSvelte (adjective): Attractively thin, graceful, and stylish
Svelte (adjective): Attractively thin, graceful, and stylish
The Software House
 
Meteor - not just for rockstars
Meteor - not just for rockstarsMeteor - not just for rockstars
Meteor - not just for rockstars
Stephan Hochhaus
 
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHP
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHPphp[world] 2016 - You Don’t Need Node.js - Async Programming in PHP
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHP
Adam Englander
 
Monitoring and Logging in Wonderland
Monitoring and Logging in WonderlandMonitoring and Logging in Wonderland
Monitoring and Logging in Wonderland
Paul Seiffert
 
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
NETWAYS
 
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
NETWAYS
 
The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.
Workhorse Computing
 
PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!
Blanca Mancilla
 
Model Serving via Pulsar Functions
Model Serving via Pulsar FunctionsModel Serving via Pulsar Functions
Model Serving via Pulsar Functions
Arun Kejariwal
 
19. stretnutie komunity kubernetes
19. stretnutie komunity kubernetes19. stretnutie komunity kubernetes
19. stretnutie komunity kubernetes
Juraj Hantak
 
Keep it simple web development stack
Keep it simple web development stackKeep it simple web development stack
Keep it simple web development stack
Eric Ahn
 
Reliability Patterns for Fun and Profit
Reliability Patterns for Fun and ProfitReliability Patterns for Fun and Profit
Reliability Patterns for Fun and Profit
Luis Mineiro
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019
Michał Kurzeja
 
Zend con 2016 - Asynchronous Prorgamming in PHP
Zend con 2016 - Asynchronous Prorgamming in PHPZend con 2016 - Asynchronous Prorgamming in PHP
Zend con 2016 - Asynchronous Prorgamming in PHP
Adam Englander
 
PyData Barcelona - weather and climate data
PyData Barcelona - weather and climate dataPyData Barcelona - weather and climate data
PyData Barcelona - weather and climate data
Margriet Groenendijk
 
Angular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedAngular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of Speed
Ilia Idakiev
 
Asynchronous data processing
Asynchronous data processingAsynchronous data processing
Asynchronous data processing
Andrea Giuliano
 

Similar to Controlling Technical Debt with Continuous Delivery (20)

Testing TYPO3 Applications
Testing TYPO3 ApplicationsTesting TYPO3 Applications
Testing TYPO3 Applications
 
PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner
 
iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기
 
Svelte (adjective): Attractively thin, graceful, and stylish
Svelte (adjective): Attractively thin, graceful, and stylishSvelte (adjective): Attractively thin, graceful, and stylish
Svelte (adjective): Attractively thin, graceful, and stylish
 
Meteor - not just for rockstars
Meteor - not just for rockstarsMeteor - not just for rockstars
Meteor - not just for rockstars
 
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHP
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHPphp[world] 2016 - You Don’t Need Node.js - Async Programming in PHP
php[world] 2016 - You Don’t Need Node.js - Async Programming in PHP
 
Monitoring and Logging in Wonderland
Monitoring and Logging in WonderlandMonitoring and Logging in Wonderland
Monitoring and Logging in Wonderland
 
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
 
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
 
The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.
 
PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!
 
Model Serving via Pulsar Functions
Model Serving via Pulsar FunctionsModel Serving via Pulsar Functions
Model Serving via Pulsar Functions
 
19. stretnutie komunity kubernetes
19. stretnutie komunity kubernetes19. stretnutie komunity kubernetes
19. stretnutie komunity kubernetes
 
Keep it simple web development stack
Keep it simple web development stackKeep it simple web development stack
Keep it simple web development stack
 
Reliability Patterns for Fun and Profit
Reliability Patterns for Fun and ProfitReliability Patterns for Fun and Profit
Reliability Patterns for Fun and Profit
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019
 
Zend con 2016 - Asynchronous Prorgamming in PHP
Zend con 2016 - Asynchronous Prorgamming in PHPZend con 2016 - Asynchronous Prorgamming in PHP
Zend con 2016 - Asynchronous Prorgamming in PHP
 
PyData Barcelona - weather and climate data
PyData Barcelona - weather and climate dataPyData Barcelona - weather and climate data
PyData Barcelona - weather and climate data
 
Angular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedAngular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of Speed
 
Asynchronous data processing
Asynchronous data processingAsynchronous data processing
Asynchronous data processing
 

More from walkmod

Devoxx UK quickie talk about walkmod
Devoxx UK quickie talk about walkmodDevoxx UK quickie talk about walkmod
Devoxx UK quickie talk about walkmod
walkmod
 
33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod
walkmod
 
walkmod - JUG talk
walkmod - JUG talkwalkmod - JUG talk
walkmod - JUG talk
walkmod
 
walkmod: how it works
walkmod: how it workswalkmod: how it works
walkmod: how it works
walkmod
 
walkmod: quick start
walkmod: quick startwalkmod: quick start
walkmod: quick start
walkmod
 
walkmod: An open source tool for coding conventions
walkmod: An open source tool for coding conventionswalkmod: An open source tool for coding conventions
walkmod: An open source tool for coding conventions
walkmod
 

More from walkmod (6)

Devoxx UK quickie talk about walkmod
Devoxx UK quickie talk about walkmodDevoxx UK quickie talk about walkmod
Devoxx UK quickie talk about walkmod
 
33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod
 
walkmod - JUG talk
walkmod - JUG talkwalkmod - JUG talk
walkmod - JUG talk
 
walkmod: how it works
walkmod: how it workswalkmod: how it works
walkmod: how it works
 
walkmod: quick start
walkmod: quick startwalkmod: quick start
walkmod: quick start
 
walkmod: An open source tool for coding conventions
walkmod: An open source tool for coding conventionswalkmod: An open source tool for coding conventions
walkmod: An open source tool for coding conventions
 

Recently uploaded

UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
aymanquadri279
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 

Recently uploaded (20)

UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 

Controlling Technical Debt with Continuous Delivery

  • 1. @raquelpau @alexsotob#Voxxed Controlling Technical Debt with Continuous Delivery Raquel Pau - Alex Soto WalkMod - RedHat
  • 2. WA L K M O D F O U N D E R B E S T P R A C T I C E S E N T H U S I A S T @ R A Q U E L PA U R A Q U E L PA U
  • 3. R E D H AT E N G I N E E R O P E N S O U R C E A D V O C AT E @ A L E X S O T O B A L E X S O T O
  • 4. Q U E S T I O N S
  • 5. S O F T WA R E I S E AT I N G T H E W O R L D
  • 6.
  • 7.
  • 9. W H AT I S C O N T I N U O U S D E L I V E RY ?
  • 10. D E L I V E R B U S I N E S S VA L U E M O R E F R E Q U E N T LY
  • 11.
  • 12. O R C H E S T R AT I N G T H E B U I L D
  • 13.
  • 14.
  • 15.
  • 16. M I C R O S E R V I C E S A N D C O N T I N U O U S D E L I V E RY
  • 17.
  • 18. N O M O R E J O B S P L E A S E
  • 19. P I P E L I N E A S C O D E
  • 20. F E AT U R E S O F P I P E L I N E E C O S Y S T E M Configuration in Source Repository Less click-and-type, more code From simple to complex Survives Jenkins restarts & connection losses Reusable definitions Build history/trend segregated per branches
  • 21. pipeline { agent any stages { stage('Test') { steps { sh './gradlew check' } } } post { always { junit 'build/reports/**/*.xml' } } }
  • 22. pipeline { agent { docker { image 'maven:3-alpine' args '-v "$PWD":/usr/src/mymaven -w /usr/src/mymaven’ } } stages { stage('Example Build') { steps { sh 'mvn -B clean verify' } } } }
  • 23. stage('Deploy - Staging') { steps { sh './deploy staging' sh './run-smoke-tests' } } post { (TODO test) failure { mail to: 'team@example.com', subject: "Failed Pipeline: ${currentBuild.fullDisplayName}", body: "Somethig is wrong with ${env.BUILD_URL}" } } stage('Sanity check') { steps { input "Does the staging environment look ok?" } }
  • 24.
  • 25. T W O - P I Z Z A T E A M S
  • 26.
  • 27. Fabric 8: Features Create Build Release Runtime Manage Feedback Platform wizards to create microservices packaging into multiple container images rolling upgrades across teams environments service discovery, scaling, failover, load balancing centralise logs, metrics, alerts, tracing, circuit breaker dashboards and metrics to get feedback on premise, public or hybrid cloud
  • 28. D I V E R S I F I E D T E A M S
  • 29. A N D O N E D AY… T E C H N I C A L D E B T S TA RT E D
  • 30. T O R E D U C E D E B T W E N E E D M E T R I C S A N D T O O L S
  • 31.
  • 32. feature#1234 feature#1354 C O N T I N U O U S I N S P E C T I O N
  • 34.
  • 35. M A N Y C O D I N G S T Y L E R U L E S A R E A U T O M AT I C A L LY F I X E A B L E
  • 37.
  • 38. I T I S A L L A B O U T C O D E T R A N S F O R M AT I O N S public void visit(ImportDeclaration n, VisitorContext vc) { if (n.getUsages().isEmpty()){ n.remove(); } }
  • 39. * K I L L E R F E AT U R E * F O R M AT P R E S E R VAT I O N
  • 40. T R U S T T O O L S O R E N S U R E T E S T C O V E R A G E
  • 41. F I X - U P S R E C I P E mvn walkmod:patch git apply walkmod.patch mvn test git commit -a —fixup HEAD git pull —rebase origin $branch git push origin HEAD:$branch
  • 42. feature#1354 git commit -a --fixup HEAD C O N T I N U O U S F I X I N G S
  • 43. P I P E L I N E L I B R A RY #!groovy @Library('github.com/walkmod/jenkins-pipeline-shared@maven') … stage('Fixing Release') { steps { walkmodApply( validatePatch: false, branch:'master', alwaysApply: true, alwaysFail: true ) } }
  • 44. WA L K M O D P I P E L I N E A P I walkmodApply: fixes your build hasWalkmodPatch: checks if there are fixings applyWalkModPatch: applies the patch pushWalkModPatch : pushes the patch
  • 45. D E M O
  • 46. I N C R E M E N TA L E X E C U T I O N M I C R O - S E R V I C E S - S TA RT I T N O W L E G A C Y C O D E - A P P LY T H E M I N C R E M E N TA L LY
  • 47.
  • 48. WA L K M O D H U B
  • 49. Q U E S T I O N S