SlideShare a Scribd company logo
1 of 38
Download to read offline
Bill	
  Havanki	
  |	
  Solu.ons	
  Architect	
  
Charm	
  City	
  Linux	
  |	
  March	
  2014
Introduc.on	
  to	
  Con.nuous	
  
Integra.on
1Monday, March 24, 14
2
About	
  Bill
• Jersey	
  Shore	
  na.ve
• Rutgers,	
  NC	
  State	
  grad
• Java	
  development	
  since	
  ’96
• DoD	
  contractor	
  for	
  15	
  years
• Clouderan	
  for	
  6	
  months
2Monday, March 24, 14
Agenda
• Part	
  I:	
  What	
  is	
  con.nuous	
  integra.on	
  (CI)?
• Part	
  II:	
  How	
  does	
  CI	
  relate	
  to	
  other	
  things?
• Interlude:	
  About	
  “process”
• Part	
  III:	
  How	
  do	
  I	
  start	
  with	
  CI?
• Conclusion	
  and	
  QA	
  Time
3
3Monday, March 24, 14
Not	
  CSI
Part	
  I:	
  What	
  is	
  CI?
4
4Monday, March 24, 14
5
Boring	
  defini.on
Con.nuous	
  integra.on	
  (CI)	
  is	
  the	
  prac.ce,	
  in	
  
so[ware	
  engineering,	
  of	
  merging	
  all	
  developer	
  
working	
  copies	
  with	
  a	
  shared	
  mainline	
  several	
  .mes	
  
a	
  day.
-­‐	
  Wikipedia
5Monday, March 24, 14
Real	
  defini.on
Stop	
  digging	
  holes
6
CC	
  BY-­‐SA	
  2.0:	
  Chris	
  Wimbush
6Monday, March 24, 14
XP	
  Origins
Kent	
  Beck:	
  “turn	
  all	
  the	
  knobs	
  up	
  to	
  10”
Don’t	
  integrate	
  some.mes,	
  integrate	
  all	
  the	
  -me
7
CC	
  BY-­‐SA	
  2.0:	
  Rick	
  Kimpel
7Monday, March 24, 14
Benefits	
  of	
  CI
• integra.on	
  happens	
  before	
  it	
  gets	
  hairy
• no	
  more	
  “well,	
  it	
  builds	
  on	
  my	
  machine”
• code	
  stability
• springboard	
  for	
  increasing	
  quality
8
8Monday, March 24, 14
Costs	
  of	
  CI
• major	
  features	
  need	
  to	
  evolve,	
  not	
  just	
  drop
• steers	
  aden.on	
  toward	
  fixing	
  builds
• need	
  some	
  infrastructure
• build	
  needs	
  to	
  work	
  without	
  a	
  human	
  running	
  it
9
9Monday, March 24, 14
A	
  happy	
  family
Part	
  II:	
  CI	
  and	
  Other	
  Prac.ces
10
10Monday, March 24, 14
“ ”Without	
  some	
  sort	
  of	
  version	
  
control	
  system	
  in	
  place,	
  you	
  
can't	
  reasonably	
  call	
  yourself	
  
a	
  so;ware	
  engineer.
–	
  Jeff	
  Atwood
11
11Monday, March 24, 14
12
CI	
  +	
  version	
  control
• first,	
  you	
  should	
  be	
  using	
  it	
  anyway
• neutral,	
  available	
  home	
  for	
  code
• remembers	
  past	
  working	
  states	
  for	
  when	
  
integra.on	
  fails
• holds	
  your	
  branches	
  that	
  need	
  integra.ng
12Monday, March 24, 14
CI	
  +	
  unit	
  tes.ng
Unit	
  tests	
  indicate
whether	
  integra.on
has	
  succeeded
13
hdps://wiki.jenkins-­‐ci.org/display/JENKINS/JUnit+graph,	
  
retrieved	
  2014-­‐02-­‐21
13Monday, March 24, 14
CI	
  +	
  automated	
  builds
• tools	
  require	
  a	
  non-­‐manual	
  build	
  process
• builds	
  must	
  work	
  outside	
  developers’	
  specific	
  
environments
14
14Monday, March 24, 14
CI	
  +	
  con.nuous	
  delivery
F**k	
  it,	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  it
15
15Monday, March 24, 14
CI	
  +	
  con.nuous	
  delivery
CI	
  enables	
  you	
  to	
  move	
  toward	
  con.nuous	
  delivery
16
16Monday, March 24, 14
Subheading:	
  Calibri	
  20pt	
  approved	
  light	
  blue
Aside:	
  On	
  Processes
17
17Monday, March 24, 14
18
Lovely
18Monday, March 24, 14
Gorgeous
19
19Monday, March 24, 14
Oh	
  my
20
20Monday, March 24, 14
Zounds!
21
LICENTIOUSLY
REPUDIATE
THAT CACOPHONY
LICENTIOUSLY
REPUDIATE
THAT CACOPHONY
21Monday, March 24, 14
The	
  purpose	
  of	
  process
Good	
  so[ware	
  processes	
  help	
  you	
  do	
  beder	
  work.
They	
  serve	
  you,	
  you	
  do	
  not	
  serve	
  them.
22
22Monday, March 24, 14
Agile	
  Manifesto
Individuals	
  and	
  interac/ons	
  over	
  processes	
  and	
  tools
Working	
  so4ware	
  over	
  comprehensive	
  documenta.on
Customer	
  collabora/on	
  over	
  contract	
  nego.a.on
Responding	
  to	
  change	
  over	
  following	
  a	
  plan
agilemanifesto.org
23
23Monday, March 24, 14
Replacing	
  you	
  with	
  a	
  small	
  shell	
  script
Part	
  III:	
  Star.ng	
  up	
  CI
24
24Monday, March 24, 14
25
Step	
  Zero:	
  Use	
  version	
  control
Without	
  version	
  control	
  there	
  is	
  no	
  point
CC	
  BY	
  3.0,	
  Jason	
  Long
CC	
  BY-­‐SA	
  3.0,	
  Smile4ever
25Monday, March 24, 14
Step	
  One:	
  Fix	
  your	
  builds
• One	
  step,	
  like	
  make	
  or	
  mvn	
  package
• From	
  a	
  command	
  line
• In	
  a	
  neutral	
  and	
  well-­‐defined	
  environment
26
26Monday, March 24, 14
Step	
  Two:	
  Tool	
  up
A	
  script	
  under	
  cron	
  can	
  do	
  it
27
cd	
  /home/bill/project
git	
  pull
mvn	
  clean	
  package
if	
  ((	
  $?	
  !=	
  0	
  ));	
  then
	
  	
  	
  	
  echo	
  "Build	
  failed"	
  |	
  mail	
  -­‐s	
  "Build	
  failed"	
  
	
  	
  	
  	
  	
  	
  	
  	
  bill@our.com	
  alex@our.com
fi
27Monday, March 24, 14
Step	
  Two:	
  Tool	
  up
• Do	
  not	
  build	
  if	
  nothing	
  changed
• Trigger	
  on	
  commit	
  instead	
  of	
  using	
  cron
• Keep	
  build	
  logs	
  and	
  ar.facts
• Keep	
  history	
  of	
  stability
• Do	
  more	
  than	
  just	
  compile	
  ...	
  test,	
  analyze	
  ...
28
Then	
  you	
  get	
  fancier
28Monday, March 24, 14
Step	
  Two:	
  Tool	
  up
And	
  then	
  you	
  realize	
  you
could	
  use	
  a	
  robust	
  tool
29
CC	
  BY-­‐SA	
  3.0,	
  the	
  Jenkins	
  Project
(hdp://jenkins-­‐ci.org/)
29Monday, March 24, 14
OMG	
  DEMO	
  TIME
30
30Monday, March 24, 14
Step	
  Three:	
  Actually	
  integrate	
  con.nuously
This	
  is	
  the	
  hard	
  part.	
  Your	
  team	
  has	
  to	
  start	
  
commipng	
  to	
  the	
  mainline	
  more	
  frequently.
The	
  CI	
  tool	
  is	
  your	
  safety	
  net.
31
31Monday, March 24, 14
Step	
  Four:	
  More	
  stuff
• Add	
  unit	
  tests
• Add	
  sta.c	
  analysis	
  like	
  Findbugs
• Feed	
  quality	
  analyzers	
  like	
  Sonar
32
32Monday, March 24, 14
Step	
  Five:	
  Add	
  lava	
  lamps
33
hdp://www.devbridge.com/ar.cles/con.nous-­‐integra.on-­‐in-­‐net-­‐projects/,	
  
retrieved	
  2014-­‐02-­‐24
33Monday, March 24, 14
Wherein	
  we	
  conclude
Conclusion
34
34Monday, March 24, 14
35
CI	
  is	
  just	
  here	
  to	
  help
• catch	
  regressions	
  for	
  you
• check	
  on	
  merges	
  for	
  you
• generate	
  handy	
  reports	
  for	
  you
• reduce	
  your	
  stress	
  level
• move	
  you	
  to	
  the	
  next	
  level
35Monday, March 24, 14
For	
  more	
  informa.on
hdp://mar.nfowler.com/ar.cles/con.nuousIntegra.on.html
hdp://www.extremeprogramming.org/rules/integrateo[en.html
hdp://jenkins-­‐ci.org/
36
36Monday, March 24, 14
Thank	
  you
Bill	
  Havanki
bill@clouderagovt.com
havanki4j@gmail.com
37
37Monday, March 24, 14
38Monday, March 24, 14

More Related Content

Viewers also liked

A developer story
A developer storyA developer story
A developer storyAlex Danvy
 
Is Orchestration the Next Big Thing in DevOps
Is Orchestration the Next Big Thing in DevOpsIs Orchestration the Next Big Thing in DevOps
Is Orchestration the Next Big Thing in DevOpsNati Shalom
 
Running OpenStack in Production
Running OpenStack in Production Running OpenStack in Production
Running OpenStack in Production Nati Shalom
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryVirendra Bhalothia
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationJohn Lynch
 
Orchestration and provisioning architecture for effective service management
Orchestration and provisioning architecture for effective service managementOrchestration and provisioning architecture for effective service management
Orchestration and provisioning architecture for effective service managementAlan McSweeney
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestrationbcoca
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction Robert Reiz
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineRobert McDermott
 
How Ansible Makes Automation Easy
How Ansible Makes Automation EasyHow Ansible Makes Automation Easy
How Ansible Makes Automation EasyPeter Sankauskas
 

Viewers also liked (13)

Ibm innovate ci for system z
Ibm innovate ci for system zIbm innovate ci for system z
Ibm innovate ci for system z
 
A developer story
A developer storyA developer story
A developer story
 
Is Orchestration the Next Big Thing in DevOps
Is Orchestration the Next Big Thing in DevOpsIs Orchestration the Next Big Thing in DevOps
Is Orchestration the Next Big Thing in DevOps
 
Orchestrating the Cloud
Orchestrating the CloudOrchestrating the Cloud
Orchestrating the Cloud
 
Running OpenStack in Production
Running OpenStack in Production Running OpenStack in Production
Running OpenStack in Production
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Orchestration and provisioning architecture for effective service management
Orchestration and provisioning architecture for effective service managementOrchestration and provisioning architecture for effective service management
Orchestration and provisioning architecture for effective service management
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestration
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 
How Ansible Makes Automation Easy
How Ansible Makes Automation EasyHow Ansible Makes Automation Easy
How Ansible Makes Automation Easy
 

Similar to Introduction to Continuous Integration

Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptnRob Jahn
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Marcin Grzejszczak
 
WTF is a Microservice - Rafael Schloming, Datawire
WTF is a Microservice - Rafael Schloming, DatawireWTF is a Microservice - Rafael Schloming, Datawire
WTF is a Microservice - Rafael Schloming, DatawireAmbassador Labs
 
Rising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOpsRising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOpsIBM UrbanCode Products
 
Bringing CD to the DoD
Bringing CD to the DoDBringing CD to the DoD
Bringing CD to the DoDGene Gotimer
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsRightScale
 
Cross Cloud CI Intro
Cross Cloud CI IntroCross Cloud CI Intro
Cross Cloud CI IntroW Watson
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker, Inc.
 
MA Microservices Meetup: Move fast and make things
MA Microservices Meetup: Move fast and make thingsMA Microservices Meetup: Move fast and make things
MA Microservices Meetup: Move fast and make thingsAmbassador Labs
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Giovanni Toraldo
 
EPAM DevOps community meetup: Building CI/CD for microservice architecture
EPAM DevOps community meetup: Building CI/CD for microservice architectureEPAM DevOps community meetup: Building CI/CD for microservice architecture
EPAM DevOps community meetup: Building CI/CD for microservice architectureKatherine Golovinova
 
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationCloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationVMware Tanzu
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentAmbassador Labs
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)Hui (Henry) Chen
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” LogeekNightUkraine
 
Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...
Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...
Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...RightScale
 
Journey Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment MaturityJourney Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment MaturityAltoros
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationNils Hofmeister
 

Similar to Introduction to Continuous Integration (20)

Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptn
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
 
WTF is a Microservice - Rafael Schloming, Datawire
WTF is a Microservice - Rafael Schloming, DatawireWTF is a Microservice - Rafael Schloming, Datawire
WTF is a Microservice - Rafael Schloming, Datawire
 
GitOps , done Right
GitOps , done RightGitOps , done Right
GitOps , done Right
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
Rising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOpsRising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOps
 
Bringing CD to the DoD
Bringing CD to the DoDBringing CD to the DoD
Bringing CD to the DoD
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud Applications
 
Cross Cloud CI Intro
Cross Cloud CI IntroCross Cloud CI Intro
Cross Cloud CI Intro
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker Cloud
 
MA Microservices Meetup: Move fast and make things
MA Microservices Meetup: Move fast and make thingsMA Microservices Meetup: Move fast and make things
MA Microservices Meetup: Move fast and make things
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
 
EPAM DevOps community meetup: Building CI/CD for microservice architecture
EPAM DevOps community meetup: Building CI/CD for microservice architectureEPAM DevOps community meetup: Building CI/CD for microservice architecture
EPAM DevOps community meetup: Building CI/CD for microservice architecture
 
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationCloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented Development
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost”
 
Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...
Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...
Integrating RightScale, Windows, and .NET for Fun and Profit - RightScale Com...
 
Journey Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment MaturityJourney Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment Maturity
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 

Recently uploaded

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Recently uploaded (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

Introduction to Continuous Integration

  • 1. Bill  Havanki  |  Solu.ons  Architect   Charm  City  Linux  |  March  2014 Introduc.on  to  Con.nuous   Integra.on 1Monday, March 24, 14
  • 2. 2 About  Bill • Jersey  Shore  na.ve • Rutgers,  NC  State  grad • Java  development  since  ’96 • DoD  contractor  for  15  years • Clouderan  for  6  months 2Monday, March 24, 14
  • 3. Agenda • Part  I:  What  is  con.nuous  integra.on  (CI)? • Part  II:  How  does  CI  relate  to  other  things? • Interlude:  About  “process” • Part  III:  How  do  I  start  with  CI? • Conclusion  and  QA  Time 3 3Monday, March 24, 14
  • 4. Not  CSI Part  I:  What  is  CI? 4 4Monday, March 24, 14
  • 5. 5 Boring  defini.on Con.nuous  integra.on  (CI)  is  the  prac.ce,  in   so[ware  engineering,  of  merging  all  developer   working  copies  with  a  shared  mainline  several  .mes   a  day. -­‐  Wikipedia 5Monday, March 24, 14
  • 6. Real  defini.on Stop  digging  holes 6 CC  BY-­‐SA  2.0:  Chris  Wimbush 6Monday, March 24, 14
  • 7. XP  Origins Kent  Beck:  “turn  all  the  knobs  up  to  10” Don’t  integrate  some.mes,  integrate  all  the  -me 7 CC  BY-­‐SA  2.0:  Rick  Kimpel 7Monday, March 24, 14
  • 8. Benefits  of  CI • integra.on  happens  before  it  gets  hairy • no  more  “well,  it  builds  on  my  machine” • code  stability • springboard  for  increasing  quality 8 8Monday, March 24, 14
  • 9. Costs  of  CI • major  features  need  to  evolve,  not  just  drop • steers  aden.on  toward  fixing  builds • need  some  infrastructure • build  needs  to  work  without  a  human  running  it 9 9Monday, March 24, 14
  • 10. A  happy  family Part  II:  CI  and  Other  Prac.ces 10 10Monday, March 24, 14
  • 11. “ ”Without  some  sort  of  version   control  system  in  place,  you   can't  reasonably  call  yourself   a  so;ware  engineer. –  Jeff  Atwood 11 11Monday, March 24, 14
  • 12. 12 CI  +  version  control • first,  you  should  be  using  it  anyway • neutral,  available  home  for  code • remembers  past  working  states  for  when   integra.on  fails • holds  your  branches  that  need  integra.ng 12Monday, March 24, 14
  • 13. CI  +  unit  tes.ng Unit  tests  indicate whether  integra.on has  succeeded 13 hdps://wiki.jenkins-­‐ci.org/display/JENKINS/JUnit+graph,   retrieved  2014-­‐02-­‐21 13Monday, March 24, 14
  • 14. CI  +  automated  builds • tools  require  a  non-­‐manual  build  process • builds  must  work  outside  developers’  specific   environments 14 14Monday, March 24, 14
  • 15. CI  +  con.nuous  delivery F**k  it,                    it 15 15Monday, March 24, 14
  • 16. CI  +  con.nuous  delivery CI  enables  you  to  move  toward  con.nuous  delivery 16 16Monday, March 24, 14
  • 17. Subheading:  Calibri  20pt  approved  light  blue Aside:  On  Processes 17 17Monday, March 24, 14
  • 22. The  purpose  of  process Good  so[ware  processes  help  you  do  beder  work. They  serve  you,  you  do  not  serve  them. 22 22Monday, March 24, 14
  • 23. Agile  Manifesto Individuals  and  interac/ons  over  processes  and  tools Working  so4ware  over  comprehensive  documenta.on Customer  collabora/on  over  contract  nego.a.on Responding  to  change  over  following  a  plan agilemanifesto.org 23 23Monday, March 24, 14
  • 24. Replacing  you  with  a  small  shell  script Part  III:  Star.ng  up  CI 24 24Monday, March 24, 14
  • 25. 25 Step  Zero:  Use  version  control Without  version  control  there  is  no  point CC  BY  3.0,  Jason  Long CC  BY-­‐SA  3.0,  Smile4ever 25Monday, March 24, 14
  • 26. Step  One:  Fix  your  builds • One  step,  like  make  or  mvn  package • From  a  command  line • In  a  neutral  and  well-­‐defined  environment 26 26Monday, March 24, 14
  • 27. Step  Two:  Tool  up A  script  under  cron  can  do  it 27 cd  /home/bill/project git  pull mvn  clean  package if  ((  $?  !=  0  ));  then        echo  "Build  failed"  |  mail  -­‐s  "Build  failed"                  bill@our.com  alex@our.com fi 27Monday, March 24, 14
  • 28. Step  Two:  Tool  up • Do  not  build  if  nothing  changed • Trigger  on  commit  instead  of  using  cron • Keep  build  logs  and  ar.facts • Keep  history  of  stability • Do  more  than  just  compile  ...  test,  analyze  ... 28 Then  you  get  fancier 28Monday, March 24, 14
  • 29. Step  Two:  Tool  up And  then  you  realize  you could  use  a  robust  tool 29 CC  BY-­‐SA  3.0,  the  Jenkins  Project (hdp://jenkins-­‐ci.org/) 29Monday, March 24, 14
  • 31. Step  Three:  Actually  integrate  con.nuously This  is  the  hard  part.  Your  team  has  to  start   commipng  to  the  mainline  more  frequently. The  CI  tool  is  your  safety  net. 31 31Monday, March 24, 14
  • 32. Step  Four:  More  stuff • Add  unit  tests • Add  sta.c  analysis  like  Findbugs • Feed  quality  analyzers  like  Sonar 32 32Monday, March 24, 14
  • 33. Step  Five:  Add  lava  lamps 33 hdp://www.devbridge.com/ar.cles/con.nous-­‐integra.on-­‐in-­‐net-­‐projects/,   retrieved  2014-­‐02-­‐24 33Monday, March 24, 14
  • 35. 35 CI  is  just  here  to  help • catch  regressions  for  you • check  on  merges  for  you • generate  handy  reports  for  you • reduce  your  stress  level • move  you  to  the  next  level 35Monday, March 24, 14