continuous delivery with jenkins and wildfly (2014)
DESCRIPTION
A presentation on a continuous delivery pipeline that leverages Jenkins Enterprise, Jenkins Operations Center, Nexus, HAProxy, and Wildfly. Pipeline components run in Docker containers along with SkyDock/SkyDNS for service discovery and NSEnter for command-line access to containers.TRANSCRIPT
©2014 CloudBees, Inc. All Rights Reserved 1©2014 CloudBees, Inc. All Rights Reserved
Continuous delivery with Jenkins and Wildfly
Tracy KennedySolution Architect
©2014 CloudBees, Inc. All Rights Reserved 2
• Solution Architect @ CloudBees
Who am I?
Git|Docker Hub: lavaliereTwitter: @Tracy_Kennedy
©2014 CloudBees, Inc. All Rights Reserved 3
Who is CloudBees?
©2014 CloudBees, Inc. All Rights Reserved 4
Who is CloudBees?
©2014 CloudBees, Inc. All Rights Reserved 5
Who is CloudBees?
Jenkins OperationsCenter
©2014 CloudBees, Inc. All Rights Reserved 6
What is Continuous Delivery?
©2014 CloudBees, Inc. All Rights Reserved 7
Target pipeline
©2013 CloudBees, Inc. All Rights Reserved
Source codeOn GitHub
Test Prod
Prod
©2014 CloudBees, Inc. All Rights Reserved 8
Tools
©2013 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 9
Tools
©2013 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 10
Tools
©2013 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 11
Tools
©2013 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 12
Tools
©2013 CloudBees, Inc. All Rights Reserved
Sets Base Image Sets the image author
Command run in a shell
Network ports to listenat runtime
Adds an entry command
©2014 CloudBees, Inc. All Rights Reserved 13
Tools
©2013 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 14
Tools
©2013 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 15
Tools
©2013 CloudBees, Inc. All Rights Reserved
©2014 CloudBees, Inc. All Rights Reserved 16
How I did itHost machine
Boot2docker VM
Container: skydockImage:
crosbymichael/SkyDock
Container: skydnsImage:
crosbymichael/skydns
Docker Server
Docker Daemon
Docker Client
©2014 CloudBees, Inc. All Rights Reserved 17
How I did it
©2014 CloudBees, Inc. All Rights Reserved 18
How I did it
©2014 CloudBees, Inc. All Rights Reserved 19
How I did it
©2014 CloudBees, Inc. All Rights Reserved 20
How I did itPlugins used:• Build Pipeline(OSS)
©2014 CloudBees, Inc. All Rights Reserved 21
How I did itPlugins used:• Config File Management (OSS)
©2014 CloudBees, Inc. All Rights Reserved 22
How I did itPlugins used:• Credentials (OSS)
©2014 CloudBees, Inc. All Rights Reserved 23
How I did itPlugins used:• Copy Artifacts (OSS)
©2014 CloudBees, Inc. All Rights Reserved 24
How I did itPlugins used:• Secure Copy (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 25
How I did itPlugins used:• Jenkins Git Plugin (OSS)
©2014 CloudBees, Inc. All Rights Reserved 26
How I did itPlugins used:• Folders (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 27
How I did itPlugins used:• Validated Merge (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 28
How I did itPlugins used:• Fast Archiving (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 29
How I did itPlugins used:• High Availability (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 30
Engineering
QA
Operations
Shared Roles and
Security Realm
OC-master Server
oc.cloudbees.com
oc.cloudbees.com/qa
oc.cloudbees.com/engoc.cloudbees.com/ops
Attached-master client
Attached-master clientAttached-master client
pushed to client master
pushed to client master
pushed to client master
How I did itPlugins used:• Shared slaves (JOC)
©2014 CloudBees, Inc. All Rights Reserved 31
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 32
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 33
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 34
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 35
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 36
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 37
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 38
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 39
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 40
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 41
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 42
Roadbumps
©2014 CloudBees, Inc. All Rights Reserved 43
That saying about insanity…
©2014 CloudBees, Inc. All Rights Reserved 44
Now the show begins!
©2014 CloudBees, Inc. All Rights Reserved 45
Detailed Architecture
JenkinsOperations Centerjoc-1.jenkins-operations-center.dev.beedemo.io:8080
Jenkins Enterpriseapi-team-1.jenkins-enterprise.dev.beedemo.io:8888
SlaveSlave-1.jenkins-
slave.dev.beedemo.io:22
SlaveSlave-2.jenkins-
slave.dev.beedemo.io:22
Nexusnexus.nexus.dev.beedemo.io
:8081
Wildfly-slaveWildfly-2.wildfly.dev.beedemo.io:8080Wildfly-2.wildfly.dev.beedemo.io:9990
Wildfly-masterWildfly-1.wildfly.dev.beedemo.io:8080Wildfly-1.wildfly.dev.beedemo.io:9990
HAProxyproxy.demo-joc-haproxy.dev.beedemo.io:80
©2014 CloudBees, Inc. All Rights Reserved 46
Jenkins Job pipeline
©2014 CloudBees, Inc. All Rights Reserved 47
Jenkins Job pipeline
©2014 CloudBees, Inc. All Rights Reserved 48
Jenkins Job pipeline
©2014 CloudBees, Inc. All Rights Reserved 49
The build + Arquillian tests
©2014 CloudBees, Inc. All Rights Reserved 50
Jenkins Job pipeline
©2014 CloudBees, Inc. All Rights Reserved 51
Jenkins Job pipeline
©2014 CloudBees, Inc. All Rights Reserved 52
Jenkins to Nexus and Nexus to Jenkins
©2014 CloudBees, Inc. All Rights Reserved 53
Jenkins to Nexus and Nexus to Jenkins
©2014 CloudBees, Inc. All Rights Reserved 54
But what about this use case?
©2014 CloudBees, Inc. All Rights Reserved 55
Jenkins Job pipeline
©2014 CloudBees, Inc. All Rights Reserved 56
Jenkins Job pipeline
©2014 CloudBees, Inc. All Rights Reserved 57
Jenkins to Wildfly
Wildfly Plugin
©2014 CloudBees, Inc. All Rights Reserved 58
Jenkins to Wildfly
©2014 CloudBees, Inc. All Rights Reserved 59
Future improvements
• Templatized jobs and builders• Blue/green deployments to Wildfly• Pipeline as a workflow (OSS)• Workflow visualizations, checkpoints, etc
(JEBC)• Hosted Docker containers• Docker slaves • Building the Wildfly application as a Docker
container
©2014 CloudBees, Inc. All Rights Reserved 60
Next step
• Demo repository: https://github.com/lavaliere/demo-joc
©2014 CloudBees, Inc. All Rights Reserved 61©2014 Cloud Bees, Inc. All Rights Reserved