QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

47
CONTINUOUS INTEGRATION Fabricio Leotti | Rodrigo Russo

description

 

Transcript of QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Page 1: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

CONTINUOUS  INTEGRATION  

Fabricio Leotti | Rodrigo Russo

Page 2: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Princípios  básicos  

Page 3: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Princípios  básicos  

•  Controle  de  versão  

Page 4: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Princípios  básicos  

•  Controle  de  versão  •  Prepare  para  a  automação  

Page 5: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Princípios  básicos  

•  Controle  de  versão  •  Prepare  para  a  automação  •  Faça,  meça,  corrija  

Page 6: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

Page 7: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 8: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 9: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 10: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 11: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 12: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 13: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 14: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 15: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 16: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  Master  branch  

Page 17: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 18: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 19: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 20: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 21: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 22: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 23: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 24: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 25: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 26: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 27: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 28: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 29: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Branching  strategy  

•  HoKix  

Page 30: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

CI/CD  Pipeline  

Page 31: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

CI/CD  Pipeline  

ptg

A Basic Deployment Pipeline

Figure 5.4 shows a typical deployment pipeline and captures the essence of the approach. Of course, a real pipeline will reflect your project’s actual process for delivering software.

Artifact repository

Source code

Commit stage

Compile Commit tests

Assemble Code analysis

reports binaries metadata

Acceptance stage

Configure environmentDeploy binaries

Smoke test Acceptance tests

Capacity stage

Configure environmentDeploy binaries

Smoke test Run capacity tests

UAT

Configure environmentDeploy binaries

Smoke test

Env & app

config

reports metadatabinaries

Production

Configure environmentDeploy binaries

Smoke test

Env & app

config

binariesreports metadata

Operationsperform

push-button releases

TestersSelf-service deploymentsDevelopers

See code metrics and test failures

Version control

Figure 5.4 Basic deployment pipeline

The process starts with the developers committing changes into their version control system. At this point, the continuous integration management system responds to the commit by triggering a new instance of our pipeline. The first (commit) stage of the pipeline compiles the code, runs unit tests, performs code analysis, and creates installers. If the unit tests all pass and the code is up to scratch, we assemble the executable code into binaries and store them in an artifact repository. Modern CI servers provide a facility to store artifacts like these and make them easily accessible both to the users and to the later stages in your pipeline. Alternatively, there are plenty of tools like Nexus and Artifactory which help you manage artifacts. There are other tasks that you might also run as part of the commit stage of your pipeline, such as preparing a test database to use for your acceptance tests. Modern CI servers will let you execute these jobs in parallel on a build grid.

111What Is a Deployment Pipeline?

Page 32: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

Code  pull   Build  &  Unit  Tes1ng   Build  &  Promote  Package  

Sta1c  Analysis  

Commit  Stage  

<Environment>  Deployment  

<Environment>  Smoke  Test  

<Environment>  Integra1on  Test  

<Environment>  Acceptance  Test  

Acceptance  Stage  

<Environment>  Load  Test  

<Environment>  Performance  Test  

Capacity  Stage  

Deploy  Binaries  

Configure  Environment  

Produc1on  

Smoke  Test  

Page 33: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

Page 34: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 35: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 36: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 37: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 38: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 39: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 40: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 41: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 42: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 43: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 44: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 45: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 46: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Jenkins  Pipeline  

•  Jenkins  jobs  

Page 47: QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration

Pollmachine  Pipeline