Friday, April 24, 2015

Maybe CD Summit And Jenkins Could Have Saved The Phoenix Project?

Gene Kim, author
By now, most everyone in the information technology (IT) business has probably read or heard about the seminal book, The Phoenix Project, by Gene Kim, Kevin Behr and George Spafford. If you haven’t read it, put it on your Kindle right now and get started. The Phoenix Project is a great novel about IT that is both engaging and enlightening. As we watch our hero, Bill, transform his IT organization from a broken and dysfunctional siloed mess to a modern, efficient and productive software and solution factory, we learn (painfully) about many of the challenges that face real-world IT organizations today. In fact these challenges actually impact more than just IT - they also impact the business. The Phoenix Project tells the powerful story of how one organization implemented continuous delivery in their DevOps transformation.

The book starts with the promotion of Bill Palmer from Director of Midrange Operations to VP of IT Operations (albeit a somewhat reluctant promotion on Bills part).  Bill quickly discovers that his newly inherited world of IT Operations is a bit of a disaster.  The first part of the book describes in painstaking detail, the various issues Bill faces: production failures, too many audit findings, technical debt, organizations at each others’ throats, and fragile artifacts and systems.  And on top of all of this, Bill is tasked with launching their next generation “bet the business” platform for ecommerce and point of sale systems, the Phoenix Project, which is already behind schedule and at risk.

The fun starts when Bill meets Erik, the mysteriously wisened “Obi Wan Kenobi”-like character that helps Bill find his way from chaos to DevOps nirvana.  Erik leads Bill through a transformation via a number of breakthroughs that improve how the IT organization runs.  They identify many of the root causes of the challenges they face such as:

  • The volume of the Work In Progress (WIP) that is bottlenecked and where (or who) those bottlenecks are (and how reducing the work going to the bottleneck can help).
  • The amount of unplanned work that impacts their operations (and how planned preventative work can help).
  • The lack of real understanding of how the work flows and what the handoffs are (and how proper documentation, planning and Kanban boards can help here).
  • The impact of audit and infosec requirements (and how correctly scoping these can REALLY help).
  • The real amount of manual labor involved in every aspect of their operations (and how automation technologies can be super helpful here).

Erik gradually leads Bill to the vision of continuous delivery and how leveraging automation in the application development and delivery lifecycle can resolve a number of these issues by optimizing the flow of WIP, insuring application quality at each stage of the journey, and by guaranteeing that the environments and applications are the same across the stages of the lifecycle.  Here’s how Erik puts it:

“Your next step should be obvious by now, grasshopper. In order for you to keep up with customer demand, which includes your upstream comrades in Development,” he says, “you need to create what Humble and Farley called a deployment pipeline. That’s your entire value stream from code check-in to production. That’s not an art. That’s production. You need to get everything in version control. Everything. Not just the code, but everything required to build the environment. Then you need to automate the entire environment creation process. You need a deployment pipeline where you can create test and production environments, and then deploy code into them, entirely on-demand. That’s how you reduce your setup times and eliminate errors, so you can finally match whatever rate of change Development sets the tempo at.”1

Erik is describing continuous delivery which is the application lifecycle management approach that is rapidly taking hold across industries.  And interestingly, there are technologies out there today that are specifically designed to help you implement continuous delivery.  Jenkins, the industry’s most popular continuous integration server is now being extended beyond the build and test stages to orchestrate full continuous delivery process. The Jenkins Workflow capability allows DevOps practitioners to create full Deployment Pipelines just as Erik describes.  If the Phoenix project had leveraged Jenkins for continuous delivery from day one, then the project would have surely been more successful, but it would also mean that this book would have been much less interesting!  As mentioned above, The Phoenix Project is a great read and should be required reading for all of us in this industry.

If you would like to learn more about how you can apply continuous delivery (CD) in your world (perhaps to ensure that no one writes a book about your software delivery disasters), come to the CD Summit World Tour this summer. In fact, Gene Kim, author of The Phoenix Project, will be a keynote speaker at the Washington DC and San Francisco events so bring your own copy of The Phoenix Project and have it autographed!

1) Kim, Gene; Behr, Kevin ; Spafford, George (2013-01-10). The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win (Kindle Locations 4373-4378). IT Revolution Press. Kindle Edition.

Dan Juengst

Senior Director, Product Marketing
CloudBees, Inc.
Follow Dan on Twitter: @DanJuengst

Wednesday, April 22, 2015

[Infograhic] What's Holding Up Speedier Software And Services Delivery?


Christina Pappas
Marketing Funnel Manager

Follow her on Twitter

Jenkins User Conference Update -- Agenda is Up for U.S. East and Europe!

There is an exciting JUC update this week! The agendas are available for JUC U.S. East and JUC Europe. Click here to read more about the talks, presenters and schedules.
As with every JUC, there is a great lineup of speakers eager to share their experience, expertise and knowledge with the Jenkins community: Martin Hobson will be presenting “Visualizing VM Provisioning with Jenkins and Google Charts” at U.S. East, and Pradeepto K. Bhattacharya’s talk is called “Orchestrating Your Pipelines with Jenkins, Python and the Jenkins API” at U.S. Europe. Learn the who/what/where of all 2015 JUC locations here.

In each agenda, you will notice some familiar names: Andrew Bayer will be presenting his popular talk called “Seven Habits of Highly Effective Jenkins Users” at JUC Europe. (You will have to race to get a seat at that will fill up!) Will Soula is back this year to JUC U.S. East to “chat” about “Chat Ops and Jenkins.” Lorelei McCollum is also returning with two sessions at JUC U.S. East: “Jenkins 101” and “Getting Groovy with Jenkins.”

You will notice a few differences in the JUC agendas for 2015. In the U.S. East, Europe and U.S. West locations, JUC will be a two-day conference! Another change is that each session has been assigned a category according to its content: Continuous Delivery, Large Scale Jenkins Implementations, DevOps, Scalability and more. This will help you decide which talks to attend. You will also see that several talks reflect the industry’s heightened interest in big data and Docker, especially in the agenda for JUC Europe.

The agendas are still in the works for JUC Israel and JUC U.S. West. There is still time to submit a speaking proposal for either of these JUC locations. The U.S. West deadline is May 3 and the Israel deadline is May 15.

JUC is the perfect opportunity for the Jenkins community to come together and network in person. You will meet Kohsuke Kawaguchi, creator of the Jenkins project, Gene Kim, author of The Phoenix Project and DevOps expert, and if you are lucky you may also meet the butler! This year, with the Jenkins project at over 100K active installations, the 2015 JUC World Tour will be the largest gathering of Jenkins users on earth.

Early bird pricing is still available for JUC U.S. East and Europe until May 1, so REGISTER NOW.

Sponsorships for the 2015 JUC and CD Summit World Tour are still available for all locations! Show your support for the Jenkins community.

Friday, April 10, 2015

2015 Jenkins User Conference World Tour - Early Bird Tickets, Keynote Speakers

The dates for the 2015 Jenkins User Conference (JUC) World Tour are coming up quickly! This year, with the Jenkins user community at its strongest and largest size yet (well over 100K active installations), each stop in the Jenkins World Tour 2015 will be the largest gathering of Jenkins users in the region.

Kohsuke Kawaguchi, the creator of the Jenkins project, will be the opening keynote speaker, just as he has been at past JUC conferences.

With the expansion of JUC this year to two days, we have added another keynote on the second day. We are pleased to announce that it will be Gene Kim, author of The Phoenix Project and a thought leader in DevOps. Learn more about Gene.

The Phoenix Project
To have both of these experts in one place will provide a tremendous opportunity to learn about Jenkins as the foundation for CD and DevOps practices - both the technologies that enable CD and DevOps and best practices for achieving CD and a DevOps culture.

This year, the Jenkins World Tour 2015 will be paired with the CD Summit conference. These two events will be run concurrently over two days (at U.S. East, Europe and U.S. West only), allowing attendees of either conference to attend any of the talks and presentations at the other event. That means a great mix of people to network with, from Jenkins developers and CD practitioners to managers, architects and directors/VPs of R&D. CD Summit was incredibly popular last year - if you didn't attend one of the seven that were held in 2014 around the world, you  missed out on a great learning opportunity. Learn more about the 2015 CD Summit conferences.

With the number of sessions and experts available to you throughout the Jenkins User Conference this year and the opportunity to crossover and attend CD Summit sessions, you have an amazing opportunity to gain insights into solving YOUR specific Jenkins and DevOps challenges.

Registration for JUC is now open for all locations. Register and take advantage of Early Bird pricing (ends May 1)!

The Call for Papers for JUC is still open for Israel and U.S. West. If you are interested in speaking or know of someone you would like to hear speak, here are the deadlines for abstract submissions:

The Call for Papers for CD Summit is open for U.S. West only:

Sponsorships are great ways to show your support for the Jenkins Community and passion for continuous delivery! Opportunities are available for all locations. Learn more here. 

Thursday, April 9, 2015

Webinar Q&A: Continuous Delivery with Jenkins Enterprise and UrbanCode Deploy

Thank you to everyone who joined us for the webinar with IBM UrbanCode.

Following are answers to the questions we received during the webinar:

Where can I see more examples and materials about jenkins and udeploy?
Instructions for configuring the publishing plugin are here:

Can you illustrate some of large installations please?
Large installations of UrbanCode Deploy today manage deployments of hundreds of applications across thousands of servers.

Is the Jenkins and Puppet integration happening by Puppet plugin?
For jenkins/puppet/docker stuff I talked about, see and in particular. For workflow, see

Is workflow plugin available in OSS version?
Yes, most of workflow is in OSS.

Do you have a trial download or POC sessions to test this tool?
For UrbanCode Deploy, you can register for an evaluation here: We do recommend a formal PoC with assistance from our team. Please email with any questions.

We have IBM Rational. What is the difference between IBM Rational & IBM UrbanCode deploy?
Rational is a brand with a lot of products so its hard to draw a clear distinction. IBM UrbanCode Deploy was part of that brand until recently, and does integrate with many of the Rational products including Team Concert, BuildForge, and ClearCase.

What do you recommend the "workflow" would look like between Jenkins & uDeploy?
Jenkins should clearly be doing all the builds. UrbanCode Deploy should take care of the mechanics of doing the deployments. Jenkins should drive UCD more than UrbanCode Deploy drives Jenkins.
It should also be where requests to deploy a collection of builds that have been tested together are promoted to production together. That leaves a question of where should the decision to promote a version that is independently tested be made. Either tool should be able to handle that request. The right place to do it likely depends on the teams’ culture and who is likely making that decision. That closer to development that decision is made, the more likely it happens in Jenkins.

Any plan on having "Thumbs up" support (Approval) at snapshot level?
Yes. Snapshots support “Quality Statuses” which is how UC Deploy tracks thumbs up.

We are a Microsoft house (and have no IBM presence). Do you support your products on Windows?
Yes. IBM UrbanCode Deploy is supported on Windows, and we integrate with a range of Microsoft Technologies from TFS to IIS to SharePoint.

Does Urbancode deploy take any DB backup, before upgrading the DB?
If you configure it to.

Can we publish code to several UCD components in the end of the build? Like fileA goes to componentA, fileB goes to componentB?
Yes. However, the current Jenkins plugin doesn’t support this. We’ve had a number of customers install the UCD command line tools

What are the key differentiators of UrbanCode Deploy and Chef or Puppet?
You have a directed, application centric, deployment automation tool versus convergent, node centric, configuration management tools. Explained in depth in our white-paper on why you would use us in addition to Chef (applies almost equally to Puppet/Chef/Ansible).

What about having to rollback a deploy? Is it up to a developer to manage the "unwinding" of any changes that happened? (think database migration and data migration)
For fully deployed things (like a Java war/ear or a .Net website) this is basically as easy as looking up the previously deployed versions and redeploying them. That’s handled out of the box. For incrementally deployed things, the rollback tends to need to run specialized reversing automation for each undesired version that was applied in the reverse order. UrbanCode Deploy handles the tracking of versions and the running of rollback in the right order out of the box, but does need to be told how to reverse your changes. We are not going to read you SQL scripts and guess at how to reverse them.

Does urban deploy help to define the workflow for enabling the downtime communication and also help the release engineer to get the required sign offs before and after deployments?
Yes, sign-offs or approvals are fully supported. Notifications of deployments starting are also supported. UrbanCode Release goes further in handling scenarios where an enterprise release might have comms going out a few hours before the event really starts (or making sure someone knows to leave the heat / air conditioning turned on that night), and needs to track the progress of numerous application deployments happening as part of the same night.

If Nexus is used for staged builds, how could uDeploy be configured to pull from both staged and released builds without defining separate components that pull from Nexus?
The pattern of promoting builds through multiple artifact repositories is generally redundant with UrbanCode Deploy. If you want a single version number to pull from one Nexus repo in lower environments and a different one in upper environments, you would parameterize the repo location in the download step using an Environment property. That sounds like it would introduce risk of not matching versions against repositories correctly, making traceability harder, and require fancier configuration for little benefit though.

Is UrbanCode Deploy compatible with Team City? 
Yes. UrbanCode Deploy supports the most popular continuous integration tools, as Jenkins is integrated with by most release automation tools.

Is there a supported pathway to move from IBM UrbanCode Deploy 6.1.1 to Deploy with Patterns?

Will uDeploy support SQL Server updates and is there any plugin for running queries from Jenkins?
UrbanCode Deploy does support deploying to SQL Server through a direct integration, a JDBC based integration, and 3rd party DB updating tools including LiquidBase, Datical DB and dbMaestro. For a full list of database centric integrations, look here:

What is the integration scenario with other Urbancode modules?
UrbanCode Deploy (and therefore Deploy with Patterns) is the only UrbanCode module with a direct link to Jenkins.

--Eric Minick

 Eric is the Release Automation Market Manager at IBM.

--Kohsuke Kawaguchi
 Kohsuke is the CTO at CloudBees.

Friday, April 3, 2015

CloudBees Jenkins Enterprise 14.11 available on Pivotal CF

CloudBees is delighted to announce the immediate availability of CloudBees Jenkins Enterprise 14.11 for Pivotal CF (version on Pivotal Network - Jenkins Enterprise by CloudBees 1.580.13.1).

This new release will allow Pivotal CF users to leverage the new Jenkins Workflow capabilities introduced in CloudBees Jenkins Enterprise 14.11 and covers the fixes for the Jenkins Security Advisories 2015-02-27 and 2015-03-23.

Key benefits of CloudBees Jenkins Enterprise for Pivotal CF
The key benefits of deploying CloudBees Jenkins Enterprise on Pivotal CF are
Continuous deployment with CloudBees Jenkins Enterprise, Pivotal CF and Cloud Foundry
Buildpacks and Pivotal CF Services support
Available in a click!
Out-of the box integration with Pivotal CF (security ...)
 Deployment of Jenkins on the Pivotal CF servers and management of the Jenkins servers by Pivotal CF

For more details, please visit:

Thursday, March 26, 2015

Webinar Q&A: Facilitating Continuous Delivery Pipelines with Jenkins Workflow

Thank you to everyone who joined us for the webinar with eSynergy--you can view the recording here.

Below are the link found in the slides from the webinar:

Get The Code:

Jenkins Enterprise by CloudBees Workflow-Related Functionality:

Following are answers to the questions we received during the webinar:

Q: Can 'pause for input" can be accepted via api? 
A: Yes you can POST to a URL to proceed. 

Q: Any support for Android Emulator in workflow? 
A: No specific support yet that we are aware of. You can use `sh` steps to launch and tear down the emulator. 

Q: Are you developing any plugins/workflows that uses Puppet/Chef? 
A: Not currently, though of course you can run such commands from shell scripts. There is a plugin that allows tracking of puppet deployments. 

Q: Pending JENKINS-27295 Booleans end up as Strings in the Groovy script. Is there a workaround? 
A: Currently you would use Boolean.parse or just check MYPARAM == 'true' 

Q: Can the DSL be extended with new commands?, For example to call things specific to plugins and not present in core? Like running an xcode build. 
A: DSL steps are contributed to by plugins. 

Q: Is there a list of plugins compatible with Workflow? 

Q: Can the DSL functions be reused across jobs? 
A: You can `load` a file of Groovy functions you wrote, or commit a Groovy class to a Jenkins-managed Git repository and then import it from as many flows as you like. 

Q: Can we restrict checkpoint to a particular access group who can click ok? 
A: Not currently; just based on Job/Build permission. 

Q: If we have 10 commits then would all 10 builds pause at Staging using up 10 executors unless someone clicks yes or no? 
A: It is not using up executors while waiting (unless you are inside `node`). If you want to automatically cancel older prompts, that would be: 

Q: Do we have ability to integrate with Jira? Like opening a task in Jira when the tests fail. 
A: Its possible the JIRA plugin for Jenkins may implement this. Or if there is a way to access JIRA REST API e.g. from curl/wget you could do this today. 

Q: Do you plan to implement a “task list” screen for a user to see all tasks awaiting their input? 
A: Not at present. This would be a great RFE. 

Q: How to enable own jars in workflow lib? Is that possible. Is that possible to download workflow lib directory from external git (scm) instead of use of "static" content? 
A: External JARs in classpath (other than plugins) not currently supported. You can load *.groovy sources (interpreted) from the load step, or use a Jenkins-managed Git repo to save common classes/functions. 

Q: How to take standard input/error and error code in shell script to manage step (sh command)? 
A: See RFE: which also contains workaround idioms. 

Q: Can you propose interfaces for some commands using not only String but also Arrays? I.e. it is not possible to send mail to many recipients or set more than one submitter in input phrase because of String, not String[] interface? 
A: For the `submitter` option to `input` you can set the name of an external group, for example LDAP group. Then anyone in that group may approve. In general yes steps can and do take arrays/maps where needed. Possible RFE, but I think would be the better approach in general (integrates nicely with authorization strategy configuration for Jenkins overall). 

Q: How can I add RFE request? 

Q: When I run the code on slave the current dir and context is set to the workplace directory. Is this way to automatically set it to the job-numbered dir or I have to do it manually? 
A: You can use the dir step to temporarily change directory (like pushd in shell scripts), or you can ask for a specific _locked_ workspace with the `ws` step. 

Q: Is that possible to put some links into workflow report screen and/or workflow step screen (i.e. to show sonar, junit links)? 
A: JUnit result archiving is supported. For Sonar use the 

Q: Do you plan to provide ability to group steps in step list (now each sh is separate step) to improve readability? 

Q: Does Input send email to alert the responsible party? 
A: No but you could use the distinct `mail` step to do so. 

Q: Does workflow support multiconfiguration jobs? E.g. can I define configurations within the workflow to run multiple concurrent builds on different platforms and have each of these follow a workflow? 
A: You can do so, although there is not currently a good way to separate displayed results by configuration. This is something we are thinking about adding. 

Q: How hard is it to implement the github triggers? 
A: See You would need Java development experience and knowledge of Jenkins plugin APIs. 

Q: Is build promotions a feature of Workflow? What does build promotion look like in Workflow? 
A: The equivalent of the Promoted Builds plugin for Workflow would be build stages. 

Q: Does workflow provide functionality to capture test result output of test stages and aggregate it similar to the JUnit test result reports in the build stage? 
A: You can run test result archiving multiple times per build. Currently all such results are simply aggregated. suggests refinements. 

Q: Is there more than the simple proceed / cancel functionality to the transitions between stages? 

Q: Are checkpoints and resuming from checkpoints a feature reserved only for Jenkins Enterprise? 
A: Yes. OSS Workflow does let builds survive simple Jenkins restarts (or slave disconnections and reconnections). 

Q: Can workflow accommodate a deployment model that is asynchronous? We use Puppet to deploy. The handshake is via MQ so the deployment status is not available immediately. 
A: I would suggest using the waitUntil step to wait for a deployment flag to be set. In the future there might be a step designed to wait for MQ events, or specifically for Puppet, etc. 

Q: Is wait until asynchronous? 
A: Yes, checks for the condition repeatedly, at increasingly long intervals if still false. 

Q: If we are using a separate tool for Deploying apps, something like IBM uDeploy how does it integrate into the workflow? 
A: You would use the `sh` (or `bat`) step to run it as an external process. 

Q: If you have jobs which now continue past a Jenkins reboot, how do you restart jobs that are stuck in a poor state or need some attention? 
A: You can cancel stuck builds if you need to. 

Q: Is it competing with XebiaLabs XLRelease and/or Nolio ReleaseAutomation? Does it have inframent abstractions, does it has easy keystores for passwords needed? 
A: Not really competing with that kind of product; more complementary. There is integration with the Credentials system in Jenkins. 

Q: Is it possible to just get an enterprise version of this plugin or does it only come as part of a package? 
A: Currently only as part of the Jenkins Enterprise package. 

Q: Is the entire pipeline defined in a single file? 
A: Yes. (Or you could define parts in a different file if that made things more readable.)

Q: Is the Job DSL plugin compatible with it? Or are they sort of competing plugins doing the same thing? (though I know Job DSL does not do workflows). 
A: Job DSL supports Workflow as of a recent release. 

Q: Can the Job DSL plugin generate workflow dsl? 
A: Yes it can. 

Q: Are there other ways to create workflow jobs? 
A: Yes, you can use the Jenkins Enterprise Templates capability. 

Q: Is there a way to have a particular user be able to authorize the proceed / cancel upon reaching an input point? 
A: Yes, `input message: '...', submitter: 'thatUserID'` 

Q: Can Jenkins be used as an artifact repository? Similar to Artifactory. 
A: You can archive artifacts from the build, though if you have big files, or want to use them from other tools, you are recommended to use Artifactory/Nexus/etc. 

Q: Is there a way to send an email to solicit input from non-technical users? 
A: There is a `mail` step. 

Q: Is there an option to launch Hadoop workflow jobs? 
A: If there is a cloud provider for Jenkins generally, it can be used to run Workflow `node` steps on that kind of slave. 

Q: Wanted to see if Jenkins can be a single place to launch jobs for hadoop, may internally Ooozie scheduler be used to launch, any option? 
A: If there is a shell command you can run to launch the job, then you can do it from Workflow. 

Q: Nowadays we rely on MultiBranch Project Plugin for support our development process based on Pull Request and Code Review. Is it possible to achieve the same result using workflow plugin? 
A: Not currently but I would like to add such support: 

Q: Where is there any source of work flow plugin job configurations aside from the github page? 
A: A new tag for StackOverflow has been proposed. 

Q: Is there perforce integration? 
A: The new Perforce plugin (from Perforce) recently added Workflow support. The older one does not have it. 

Q: Would you want to create a groovy script that contains functions that can be reused in other workflow builds, it should be a plugin? 
A: Need not be a plugin, can just live in your SCM, etc. 

Q: What is the recommended way to have reusable groovy parts shared among different jobs? 
A: You can use the `load` step, or you can define classes in a Git repo hosted by Jenkins and which are then available for immediate import. Other options may be added in the future. 

Q: Why is 'Surviving Restarts' implemented in a Plugin, and not in Jenkins Core? 
A: Technical reasons too involved to go into here. Basically Jenkins was not originally designed to make that possible. Jenkins Enterprise provides a plugin to support Long Running Builds. 

Q: Is Console output of parallel executions in any way grouped, or just all lines mixed up? 
A: With lines intermingled, but prefixed by branch name. 

Q: I have my workflow script in one SCM repo, but want to trigger the job from all changes in a different repo, can I do that? Or would I need to keep workflow script with my sources? 
A: Yes, you can use as many repositories are you like from a single build, which may or may not be where the Groovy script is kept. 

Q: Will there be an option to download the example workflow source? 

Q: How is the Jenkins workflow kept in a source code control system of some kind? For example to see what variables were defined as at some point in the past? 
A: You can load your whole flow script, or just a part of it, from source control.


Nigel is a Senior Solution Architect at CloudBees.