Continuous delivery with 
Jenkins and Wildfly 
Tracy Kennedy 
Solution Architect 
©2014 CloudBees, Inc. All Rights Reserved 1
• Solution Architect @ CloudBees 
©2014 CloudBees, Inc. All Rights Reserved 2 
Who am I? 
Git|Docker Hub: lavaliere 
Twitter: @Tracy_Kennedy
Who is CloudBees? 
©2014 CloudBees, Inc. All Rights Reserved 3
Who is CloudBees? 
©2014 CloudBees, Inc. All Rights Reserved 4
Who is CloudBees? 
Jenkins Operations 
Center 
©2014 CloudBees, Inc. All Rights Reserved 5
What is Continuous Delivery? 
©2014 CloudBees, Inc. All Rights Reserved 6
Target pipeline 
Source code 
On GitHub 
©2013 CloudBees, Inc. 
All Rights Reserved 
©2014 CloudBees, Inc. All Rights Reserved 7
©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
Sets Base Image Sets the image 
©2014 CloudBees, Inc. All Rights Reserved 12 
Tools 
©2013 CloudBees, Inc. 
All Rights Reserved 
author 
Command run in a shell 
Network ports to listen 
at 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
Docker Client 
©2014 CloudBees, Inc. All Rights Reserved 16 
How I did it 
Host machine 
Boot2docker VM 
Container: 
skydock 
Image: 
crosbymichael/S 
kyDock 
Container: 
skydns 
Image: 
crosbymichael/s 
kydns 
Docker Server 
Docker Daemon
©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 it 
Plugins used: 
• Build Pipeline(OSS)
©2014 CloudBees, Inc. All Rights Reserved 21 
How I did it 
Plugins used: 
• Config File Management (OSS)
©2014 CloudBees, Inc. All Rights Reserved 22 
How I did it 
Plugins used: 
• Credentials (OSS)
©2014 CloudBees, Inc. All Rights Reserved 23 
How I did it 
Plugins used: 
• Copy Artifacts (OSS)
©2014 CloudBees, Inc. All Rights Reserved 24 
How I did it 
Plugins used: 
• Secure Copy (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 25 
How I did it 
Plugins used: 
• Jenkins Git Plugin (OSS)
©2014 CloudBees, Inc. All Rights Reserved 26 
How I did it 
Plugins used: 
• Folders (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 27 
How I did it 
Plugins used: 
• Validated Merge (JEBC)
©2014 CloudBees, Inc. All Rights Reserved 28 
How I did it 
Plugins used: 
• Fast Archiving (JEBC)
HA Proxy 
Jenkins 
Enterprise 
Master-1 
NAS Storage 
backup 
©2014 CloudBees, Inc. All Rights Reserved 29 
How I did it 
Plugins used: 
• High Availability (JEBC) 
Jenkins Enterprise Master-1 
Jenkins Enterprise Master-N 
Jenkins 
Enterprise 
Master-N 
HA Proxy 
NAS Storage 
backup 
…
oc.cloudbees.com 
OC-master Server 
pushed to client master 
©2014 CloudBees, Inc. All Rights Reserved 30 
QA 
Engineering 
Operations 
Shared Roles 
and 
Security Realm 
oc.cloudbees.com/qa 
oc.cloudbees.com/eng 
oc.cloudbees.com/ops 
Attached-master client 
Attached-master client 
Attached-master client 
How I did it 
Plugins used: 
• Shared slaves (JOC)
Roadbumps 
©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
That saying about insanity… 
©2014 CloudBees, Inc. All Rights Reserved 43
Now the show begins! 
©2014 CloudBees, Inc. All Rights Reserved 44
Detailed Architecture 
Wildfly-master 
Wildfly-1.wildfly.dev.beedemo.io:8080 
Wildfly-1.wildfly.dev.beedemo.io:9990 
©2014 CloudBees, Inc. All Rights Reserved 45 
Jenkins 
Operations 
Center 
joc-1.jenkins-operations-center. 
dev.beedemo.io:8080 
Jenkins Enterprise 
api-team-1.jenkins-enterprise. 
dev.beedemo.io:8 
888 
Slave 
Slave-1.jenkins-slave. 
dev.beedemo.io:2 
2 
Slave 
Slave-2.jenkins-slave. 
dev.beedemo.io: 
22 
Nexus 
nexus.nexus.dev.beedemo.io 
:8081 
Wildfly-slave 
Wildfly-2.wildfly.dev.beedemo.io:8080 
Wildfly-2.wildfly.dev.beedemo.io:9990 
HAProxy 
proxy.demo-joc-haproxy.dev.beedemo.io:80
Jenkins Job pipeline 
©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
The build + Arquillian tests 
©2014 CloudBees, Inc. All Rights Reserved 49
Jenkins Job pipeline 
©2014 CloudBees, Inc. All Rights Reserved 50
Jenkins Job pipeline 
©2014 CloudBees, Inc. All Rights Reserved 51
Jenkins to Nexus and Nexus to 
Jenkins 
©2014 CloudBees, Inc. All Rights Reserved 52
Jenkins to Nexus and Nexus to 
Jenkins 
©2014 CloudBees, Inc. All Rights Reserved 53
But what about this use 
case? 
©2014 CloudBees, Inc. All Rights Reserved 54
Jenkins Job pipeline 
©2014 CloudBees, Inc. All Rights Reserved 55
Jenkins Job pipeline 
©2014 CloudBees, Inc. All Rights Reserved 56
Jenkins to Wildfly 
Wildfly Plugin 
©2014 CloudBees, Inc. All Rights Reserved 57
Jenkins to Wildfly 
©2014 CloudBees, Inc. All Rights Reserved 58
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 59
©2014 CloudBees, Inc. All Rights Reserved 60 
Next step 
• Demo repository: 
https://github.com/lavaliere/demo-joc
©2014 Cloud Bees, Inc. All Rights Reserved 
©2014 CloudBees, Inc. All Rights Reserved 61

Continuous Delivery with Jenkins and Wildfly (2014)