SlideShare une entreprise Scribd logo
1  sur  29
Docker & Jenkins Pipeline
Continuous Integration – Mark Waite
Mile High Agile 2018
The
Intersection
Accident
Problem
Accidents frequently happen
at intersections
The Software Integration Problem
Merge
Team 1
Team 2
Team 3
• Integration frequently fails
• Conflicting changes
• Misunderstood requirements
• Missed capabilities
• Larger integrations fail more
Integration surprises
• Frequently surprised
• That should have worked
• Works on my machine
• Why would anyone do that?
• That’s a feature, not a bug
• …
The
Intersection
Accident
Solution
Roundabouts have
fewer accidents and
less severe accidents
The Software Integration Solution
• Integrate frequently • Combine changes often
• Evaluate changes often
• Detect issues early
Merge
Team 1
Team 2
Team 3
Merge
Team 1
Team 2
Team 3
Merge
Team 1
Team 2
Team 3
Merge
Team 1
Team 2
Team 3
Merge
Team 1
Team 2
Team 3
Implementation: Meet the Red Team
• Goal: Deliver great software from a happy team
• Integrate
• Build
• Test
• Deliver
• Find failures sooner, faster
Red Team Uses Jenkins Pipeline
• Jenkins Continuous Integration
• Open source
• Full-featured
• Scalable
• Powerful
• Easy to configure
Red Team Demo – Jenkins Pipeline
• Red Team finds team level problems sooner
• Conflicts discovered earlier
• Missed requirements identified sooner
• Integration is less painful because it is more frequent
Meet Ms. Green and Mrs. Black
• Red team members
• Ms. Green
• Mrs. Black
• Find problems sooner
Merge
Ms. Green
Red Team
Mrs. Black
What if I could find
problems before merge?
Check Proposed Changes
• Detect conflicts before merge
• Run tests before code review
• Try Pipeline improvements
Merge
Ms. Green
Red Team
Mrs. Black
What if I could find
problems before merge?
Red Team Uses Jenkins Multi-branch Pipeline
• Multi-branch Pipeline
• Domain specific language (DSL)
• Developer defined and modified
• Stored with the source code
• Job per branch
• Jobs created automatically
• Jobs destroyed automatically
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'make package'
}
}
}
}
Multi-branch Jenkins Pipeline Demo
• Ms. Green and Mrs. Black finds problems sooner
• Private merge of proposed change
• Merge conflicts detected
• Tests run before code review
The
Unintended
Variation
Problem
Surprises aren’t always happy
This Photo by BlarSnow is licensed under CC BY-SA
Variation in Software Development
• Good: Intentional Variation
• Platform specific build
• Multi-platform tests
• Web browser tests
• Low bandwidth tests
This icon by Sean Martell is
licensed under CC BY-SA
Variation in Software Development
• Bad: Unintentional Variation
• Wrong build tools
• Outdated dependencies
• Contaminated tests
• Full file systems
Reducing Unintentional Variation with Docker
• Docker Containers
• Repeatable
• Isolated file system
• Isolated process - lightweight
• Open source
Building with Docker – Apache Maven
• Java 7, latest Maven 3
• docker run maven:3-jdk-7 mvn –v
• Java 8, latest Maven 3
• docker run maven:3-jdk-8 mvn –v
• Java 9, latest Maven 3
• docker run maven:3-jdk-9 mvn –v
• Java 10, latest Maven 3
• docker run maven:3-jdk-10 mvn -v
• Java 11, latest Maven 3
• docker run maven:3-jdk-11 mvn -v
See https://hub.docker.com/_/maven/ for more command line details
Building with Docker – Gradle
• Java 8, Gradle 4.7.0
• docker run gradle:4.7.0-jre8 gradle –-version
• Java 9, Gradle 4.7.0
• docker run gradle:4.7.0-jre9 gradle –-version
• Java 10, Gradle 4.7.0
• docker run gradle:4.7.0-jre10 gradle –-version
See https://hub.docker.com/_/gradle/ for more command line details
Define Your Own Toolchain
• Dockerfile specifies
• Operating system (CentOS, Debian, Red Hat, SUSE, Ubuntu, …)
• Packages
• File system contents
• Volume mount points (reuse, persistence across run, etc.)
Build with Docker
• Repeatable builds in precisely defined environment
• Specify exact tool versions in Dockerfile
• Clean file system is easy
• Examples
• I need gcc 6.1 and go 1.8, they need gcc 4.3 and java 1.8
• Both can be satisfied by each compiling from a purpose-built docker image
• I need specific library versions, they need different versions
• Both satisfied by their own Dockerfile
Docker for Unit and Integration Tests
Fewer environment surprises
Docker for Better Unit & Integration Testing
• Docker provides more consistent runtime
• Reduce differences between test environments
• Examples
• Unit tests run in Docker start from a clean state
• Test environment cleanup is simpler
Specific Example – Jenkins Test Harness
• Jenkins test harness uses a specific named temporary directory
• Multiple users on same machine cannot use same directory
• Docker file system isolation solves it
Docker for End to End Tests
Rapid configuration of complex scenarios
Docker for Better End to End Testing
• Docker automates complicated configuration
• Repeatable test environment creation
• Compose multi-component test configurations
• Spend less time configuring test environments
• Spend more time testing
• Examples:
• Jenkins LTS with plugins
• https://github.com/MarkEWaite/docker-lfs/tree/lts-with-plugins
Docker for Bug Reports
Repeatable environments in the bug report
Docker for Better Bug Reports
• Simplify long sequences of pre-conditions in Dockerfile
• Focus the report on specific bug details
• Simplify setup for bug fixer
• Some examples:
• JENKINS-41948 – noSuchMethodError in scanning
• JENKINS-42204 – NPE due to GitSCMSource change
• JENKINS-46724 – Illegal reflective access from remoting
Docker & Jenkins Together
• Jenkins for Pipeline as code
• Docker for infrastructure as code

Contenu connexe

Tendances

Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Bamdad Dashtban
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
Shreeniwas Iyer
 

Tendances (20)

An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
 
JavaOne 2016 - Pipeline as code
JavaOne 2016 - Pipeline as codeJavaOne 2016 - Pipeline as code
JavaOne 2016 - Pipeline as code
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 
Pipeline based deployments on Jenkins
Pipeline based deployments  on JenkinsPipeline based deployments  on Jenkins
Pipeline based deployments on Jenkins
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
 
Jfokus 2017 - The DevOps Disaster
Jfokus 2017 - The DevOps Disaster Jfokus 2017 - The DevOps Disaster
Jfokus 2017 - The DevOps Disaster
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of Testing
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svn
 
Use Docker to Enhance Your Testing
Use Docker to Enhance Your TestingUse Docker to Enhance Your Testing
Use Docker to Enhance Your Testing
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
 
Jenkins introduction
Jenkins introductionJenkins introduction
Jenkins introduction
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
 
Jenkins, pipeline and docker
Jenkins, pipeline and docker Jenkins, pipeline and docker
Jenkins, pipeline and docker
 

Similaire à Docker and Jenkins Pipeline

Similaire à Docker and Jenkins Pipeline (20)

MyHeritage - QA Automations in a Continuous Deployment environment
MyHeritage -  QA Automations in a Continuous Deployment environmentMyHeritage -  QA Automations in a Continuous Deployment environment
MyHeritage - QA Automations in a Continuous Deployment environment
 
MyHeritage - End 2 End testing Infra
MyHeritage - End 2 End testing InfraMyHeritage - End 2 End testing Infra
MyHeritage - End 2 End testing Infra
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with Docker
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
 
Continuous Integration - Mobile Practice
Continuous Integration - Mobile PracticeContinuous Integration - Mobile Practice
Continuous Integration - Mobile Practice
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
Improving WordPress Development and Deployments with Docker
Improving WordPress Development and Deployments with DockerImproving WordPress Development and Deployments with Docker
Improving WordPress Development and Deployments with Docker
 
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
 
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
 
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and ServerspecVerifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
 
Gradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhereGradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhere
 
Dockerizing Python Applications
Dockerizing Python ApplicationsDockerizing Python Applications
Dockerizing Python Applications
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 
Performance Tuning in the Trenches
Performance Tuning in the TrenchesPerformance Tuning in the Trenches
Performance Tuning in the Trenches
 
ExpoQA 2017 Docker and CI
ExpoQA 2017 Docker and CIExpoQA 2017 Docker and CI
ExpoQA 2017 Docker and CI
 
Docker & ci
Docker & ciDocker & ci
Docker & ci
 

Plus de Mark Waite

Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Mark Waite
 

Plus de Mark Waite (9)

Training as Code - Applying CI/CD to training
Training as Code - Applying CI/CD to trainingTraining as Code - Applying CI/CD to training
Training as Code - Applying CI/CD to training
 
Docker and Jenkins [as code]
Docker and Jenkins [as code]Docker and Jenkins [as code]
Docker and Jenkins [as code]
 
Thinking about Jenkins Security
Thinking about Jenkins SecurityThinking about Jenkins Security
Thinking about Jenkins Security
 
Lessons from Jenkins Platform Support
Lessons from Jenkins Platform SupportLessons from Jenkins Platform Support
Lessons from Jenkins Platform Support
 
Git for jenkins faster and better
Git for jenkins   faster and betterGit for jenkins   faster and better
Git for jenkins faster and better
 
To TDD or not to TDD - that is the question
To TDD or not to TDD - that is the questionTo TDD or not to TDD - that is the question
To TDD or not to TDD - that is the question
 
Git in-the-large
Git in-the-largeGit in-the-large
Git in-the-large
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
 
Jenkins For One
Jenkins For OneJenkins For One
Jenkins For One
 

Dernier

Dernier (20)

The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 

Docker and Jenkins Pipeline

  • 1. Docker & Jenkins Pipeline Continuous Integration – Mark Waite Mile High Agile 2018
  • 3. The Software Integration Problem Merge Team 1 Team 2 Team 3 • Integration frequently fails • Conflicting changes • Misunderstood requirements • Missed capabilities • Larger integrations fail more
  • 4. Integration surprises • Frequently surprised • That should have worked • Works on my machine • Why would anyone do that? • That’s a feature, not a bug • …
  • 6. The Software Integration Solution • Integrate frequently • Combine changes often • Evaluate changes often • Detect issues early Merge Team 1 Team 2 Team 3 Merge Team 1 Team 2 Team 3 Merge Team 1 Team 2 Team 3 Merge Team 1 Team 2 Team 3 Merge Team 1 Team 2 Team 3
  • 7. Implementation: Meet the Red Team • Goal: Deliver great software from a happy team • Integrate • Build • Test • Deliver • Find failures sooner, faster
  • 8. Red Team Uses Jenkins Pipeline • Jenkins Continuous Integration • Open source • Full-featured • Scalable • Powerful • Easy to configure
  • 9. Red Team Demo – Jenkins Pipeline • Red Team finds team level problems sooner • Conflicts discovered earlier • Missed requirements identified sooner • Integration is less painful because it is more frequent
  • 10. Meet Ms. Green and Mrs. Black • Red team members • Ms. Green • Mrs. Black • Find problems sooner Merge Ms. Green Red Team Mrs. Black What if I could find problems before merge?
  • 11. Check Proposed Changes • Detect conflicts before merge • Run tests before code review • Try Pipeline improvements Merge Ms. Green Red Team Mrs. Black What if I could find problems before merge?
  • 12. Red Team Uses Jenkins Multi-branch Pipeline • Multi-branch Pipeline • Domain specific language (DSL) • Developer defined and modified • Stored with the source code • Job per branch • Jobs created automatically • Jobs destroyed automatically pipeline { agent any stages { stage('Build') { steps { sh 'make package' } } } }
  • 13. Multi-branch Jenkins Pipeline Demo • Ms. Green and Mrs. Black finds problems sooner • Private merge of proposed change • Merge conflicts detected • Tests run before code review
  • 14. The Unintended Variation Problem Surprises aren’t always happy This Photo by BlarSnow is licensed under CC BY-SA
  • 15. Variation in Software Development • Good: Intentional Variation • Platform specific build • Multi-platform tests • Web browser tests • Low bandwidth tests This icon by Sean Martell is licensed under CC BY-SA
  • 16. Variation in Software Development • Bad: Unintentional Variation • Wrong build tools • Outdated dependencies • Contaminated tests • Full file systems
  • 17. Reducing Unintentional Variation with Docker • Docker Containers • Repeatable • Isolated file system • Isolated process - lightweight • Open source
  • 18. Building with Docker – Apache Maven • Java 7, latest Maven 3 • docker run maven:3-jdk-7 mvn –v • Java 8, latest Maven 3 • docker run maven:3-jdk-8 mvn –v • Java 9, latest Maven 3 • docker run maven:3-jdk-9 mvn –v • Java 10, latest Maven 3 • docker run maven:3-jdk-10 mvn -v • Java 11, latest Maven 3 • docker run maven:3-jdk-11 mvn -v See https://hub.docker.com/_/maven/ for more command line details
  • 19. Building with Docker – Gradle • Java 8, Gradle 4.7.0 • docker run gradle:4.7.0-jre8 gradle –-version • Java 9, Gradle 4.7.0 • docker run gradle:4.7.0-jre9 gradle –-version • Java 10, Gradle 4.7.0 • docker run gradle:4.7.0-jre10 gradle –-version See https://hub.docker.com/_/gradle/ for more command line details
  • 20. Define Your Own Toolchain • Dockerfile specifies • Operating system (CentOS, Debian, Red Hat, SUSE, Ubuntu, …) • Packages • File system contents • Volume mount points (reuse, persistence across run, etc.)
  • 21. Build with Docker • Repeatable builds in precisely defined environment • Specify exact tool versions in Dockerfile • Clean file system is easy • Examples • I need gcc 6.1 and go 1.8, they need gcc 4.3 and java 1.8 • Both can be satisfied by each compiling from a purpose-built docker image • I need specific library versions, they need different versions • Both satisfied by their own Dockerfile
  • 22. Docker for Unit and Integration Tests Fewer environment surprises
  • 23. Docker for Better Unit & Integration Testing • Docker provides more consistent runtime • Reduce differences between test environments • Examples • Unit tests run in Docker start from a clean state • Test environment cleanup is simpler
  • 24. Specific Example – Jenkins Test Harness • Jenkins test harness uses a specific named temporary directory • Multiple users on same machine cannot use same directory • Docker file system isolation solves it
  • 25. Docker for End to End Tests Rapid configuration of complex scenarios
  • 26. Docker for Better End to End Testing • Docker automates complicated configuration • Repeatable test environment creation • Compose multi-component test configurations • Spend less time configuring test environments • Spend more time testing • Examples: • Jenkins LTS with plugins • https://github.com/MarkEWaite/docker-lfs/tree/lts-with-plugins
  • 27. Docker for Bug Reports Repeatable environments in the bug report
  • 28. Docker for Better Bug Reports • Simplify long sequences of pre-conditions in Dockerfile • Focus the report on specific bug details • Simplify setup for bug fixer • Some examples: • JENKINS-41948 – noSuchMethodError in scanning • JENKINS-42204 – NPE due to GitSCMSource change • JENKINS-46724 – Illegal reflective access from remoting
  • 29. Docker & Jenkins Together • Jenkins for Pipeline as code • Docker for infrastructure as code

Notes de l'éditeur

  1. We’ve found through years of driving automobiles that accidents happen more frequently at intersections than on long straight stretches.
  2. Tell the story of the wooden trivet. Wooden trivet looks like it should assemble in either direction. Legs appear consistently sized, finish is consistent, and it looks reasonable Inverted parts do not assemble cleanly, no matter how much they look like they will.
  3. A birthday gift is an intentional surprise. We laugh and smile and enjoy the experience of being surprised by the contents of that beautifully wrapped package. The gift is a source of joy and fun
  4. Intentional variation in software development happens all the time. We develop for multiple platforms. We test on multiple platforms. We develop for multiple browsers. We test our mobile apps in low bandwidth environments. Those can all be good variations in software development. They help us create great software.
  5. Unfortunately, some variation can delay or derail software creation. When we build with the wrong tool, we may get the wrong results. When we use outdated dependencies, we may have bugs we did not expect. When unexpected files on a test system alter the behavior of the test, we may miss important bugs. When a build system or a test system runs out of space, we may waste time diagnosing irrelevant failures
  6. Describe a brief history of containers, Solaris and BSD as jails, then Linux with greater ease and more capabilities.