<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5129937550862346934</id><updated>2012-02-22T10:34:03.576-05:00</updated><category term='install'/><category term='Red Hat'/><category term='postgres'/><category term='continuous integration'/><category term='cloud development'/><category term='news'/><category term='Amazon'/><category term='jenkins support'/><category term='DEV at cloud'/><category term='MongoHQ'/><category term='events'/><category term='api'/><category term='private-cloud'/><category term='redhat'/><category term='grails'/><category term='Chariot Solutions'/><category term='liferay'/><category term='cross-browser testing'/><category term='continuous deployment'/><category term='git'/><category term='SonarSource'/><category term='tips'/><category term='Papertrail'/><category term='video'/><category term='eclipse'/><category term='dev-at-cloud pe'/><category term='AnyCloud'/><category term='CollabNet'/><category term='EC2'/><category term='training'/><category term='Codesion'/><category term='business'/><category term='SSH'/><category term='scalability'/><category term='Subversion'/><category term='Eventbrite'/><category term='security'/><category term='webinar'/><category term='JFrog'/><category term='Rails'/><category term='hybrid'/><category term='cloud'/><category term='news Platform as a Service'/><category term='juc'/><category term='CouchDB'/><category term='hiring'/><category term='XWiki'/><category term='EnterpriseDB'/><category term='VMware'/><category term='HaaS'/><category term='newsletter'/><category term='market'/><category term='postgres plus'/><category term='dependency'/><category term='Steve Harris'/><category term='WANdisco'/><category term='architecture'/><category term='automation'/><category term='partner'/><category term='conferences'/><category term='New Relic'/><category term='JavaEE'/><category term='Microsoft'/><category term='RUN at cloud'/><category term='Hubot'/><category term='PaaS'/><category term='Award'/><category term='Kohsuke kawaguchi'/><category term='Campfire'/><category term='jenkins'/><category term='uberSVN'/><category term='Selenium'/><category term='availability'/><category term='status'/><category term='template'/><category term='Oracle'/><category term='Amazon Web Services'/><category term='Cloudant'/><category term='SaaS'/><category term='cloudbees'/><category term='agile'/><category term='survey'/><category term='plugin'/><category term='polling'/><category term='Sacha'/><category term='O&apos;Reilly'/><category term='Spring'/><category term='devops'/><category term='chef'/><category term='Ecosystem'/><category term='Platform as a Service'/><category term='JBoss'/><category term='JVM'/><category term='kohsuke'/><category term='Bob Bickel'/><category term='speaking'/><category term='scala jvm'/><category term='GlassFish'/><category term='deployment'/><category term='GAE'/><category term='nectar'/><category term='internal'/><category term='hudson'/><category term='jenkins enterprise'/><category term='RUN-at-cloud'/><category term='Java'/><category term='Google App Engine'/><category term='Open Source'/><category term='AWS'/><category term='webinars'/><category term='JCP'/><category term='infrastructure'/><category term='GitHub'/><category term='fun stuff'/><category term='IaaS'/><category term='Stax'/><category term='jenkins user conference'/><category term='Maven'/><category term='Sauce Labs'/><category term='run'/><category term='Janky'/><category term='DEV-at-cloud'/><title type='text'>CloudBees Blog</title><subtitle type='html'>CloudBees is the only cloud company focused on servicing the complete develop-to-deploy lifecycle of Java web applications in the cloud – where customers do not have to worry about servers, virtual machines or IT staff. The CloudBees platform today includes DEV@cloud, a service that lets developers take their build and test environments to the cloud, and RUN@cloud, which lets teams seamlessly deploy these applications to production on the cloud.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/-/news'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/search/label/news'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/-/news/-/news?start-index=26&amp;max-results=25'/><author><name>Alyssa</name><uri>http://www.blogger.com/profile/07546770156168771453</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-1714538695338818432</id><published>2012-02-19T17:32:00.000-05:00</published><updated>2012-02-19T17:54:34.189-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='RUN at cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='DEV at cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Jenkins IRC Plugin</title><content type='html'>&lt;b&gt;Overview&lt;/b&gt;&lt;br /&gt;Jenkins is a continuous integration switchboard centralizing the communication with many different protocols, such as SSH, Git and SVN. This blog entry will focus on the IRC protocol and how one can turn Jenkins into &lt;a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat_bot"&gt;IRC bot&lt;/a&gt;&amp;nbsp;with the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/IRC+Plugin"&gt;IRC plugin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When the IRC plugin is installed and configured, Jenkins can send notification messages to a chat room (or channel), such as build information, and users can send messages to Jenkins to obtain information and perform actions, such as builds.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Stable Release Versions&lt;/b&gt;&lt;br /&gt;The latest release of the IRC plugin is 2.18 and was released in November 2011. It has known issues.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Requirements for Plugin-Use&lt;/b&gt;&lt;br /&gt;Jenkins 1.392 or newer and the utility plugin "&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Instant+Messaging+Plugin"&gt;instant-messaging&lt;/a&gt;" (called "Instant Messaging plugin").&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;How to Use&lt;/b&gt;&lt;br /&gt;To demonstrate the use of the IRC bot plugin I first set up a test channel at &lt;a href="http://freenode.net/"&gt;FreeNode&lt;/a&gt; called &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;##jenkins-irc-bot-test&lt;/span&gt;. Then I configured Jenkins, from the main configuration page, to connect to FreeNode and that channel:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-rLSkkCT0YIA/Tzjlw7pYiVI/AAAAAAAAAH8/eNjSatqKipw/s1600/Screen+shot+2012-02-13+at+11.27.49+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="632" src="http://1.bp.blogspot.com/-rLSkkCT0YIA/Tzjlw7pYiVI/AAAAAAAAAH8/eNjSatqKipw/s640/Screen+shot+2012-02-13+at+11.27.49+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Using the Mac OS &lt;a href="http://colloquy.info/"&gt;Colloquy&lt;/a&gt; chat client, I can connect to the same channel and also connect to Jenkins itself for the configured nickname, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;jenkins-irc-bot-nick&lt;/span&gt;, and send commands, such as &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;!jenkins help&lt;/span&gt;&amp;nbsp;that lists all the commands:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-h_MfGLiI5Ww/Tzjmtk_b7wI/AAAAAAAAAIE/yVVJ9FQeuE4/s1600/Screen+shot+2012-02-13+at+11.31.44+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="450" src="http://2.bp.blogspot.com/-h_MfGLiI5Ww/Tzjmtk_b7wI/AAAAAAAAAIE/yVVJ9FQeuE4/s640/Screen+shot+2012-02-13+at+11.31.44+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;The command prefix &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;!jenkins&lt;/span&gt;&amp;nbsp;identifies a chat message as a command and is configurable from the IRC configuration section of the main Jenkins configuration page.&lt;br /&gt;&lt;br /&gt;I set up a job called &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;test&lt;/span&gt; and then "chatted" a few commands:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--y3xzTaEa98/TzjqEUwKaXI/AAAAAAAAAIM/YjMVbEBlxhU/s1600/Screen+shot+2012-02-13+at+11.46.21+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="450" src="http://1.bp.blogspot.com/--y3xzTaEa98/TzjqEUwKaXI/AAAAAAAAAIM/YjMVbEBlxhU/s640/Screen+shot+2012-02-13+at+11.46.21+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;The&amp;nbsp;transcript&amp;nbsp;shows that I first listed all the jobs and also obtained the status of the job &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;test&lt;/span&gt;. Then I built job &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;test&lt;/span&gt;, checking the queue, and finally checking the status again. The chat room (or channel)&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;##jenkins-irc-bot-test&lt;/span&gt; shows that there are two new messages:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-gGMdUmeMnXU/Tzjq01WF7LI/AAAAAAAAAIU/l8Dn3-ssJ5c/s1600/Screen+shot+2012-02-13+at+11.49.35+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="450" src="http://3.bp.blogspot.com/-gGMdUmeMnXU/Tzjq01WF7LI/AAAAAAAAAIU/l8Dn3-ssJ5c/s640/Screen+shot+2012-02-13+at+11.49.35+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Jenkins is sending messages that the test job was started and completed. I configured the job &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;test&lt;/span&gt; to send such messages:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LtTbmyKqdQo/TzjrY5cisGI/AAAAAAAAAIc/y83pIjfJBJ8/s1600/Screen+shot+2012-02-13+at+11.52.00+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="484" src="http://1.bp.blogspot.com/-LtTbmyKqdQo/TzjrY5cisGI/AAAAAAAAAIc/y83pIjfJBJ8/s640/Screen+shot+2012-02-13+at+11.52.00+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="p1"&gt;&lt;b&gt;How to Use the Plugins on DEV@cloud/RUN@cloud?&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;The IRC plugin is available to install on a DEV@cloud Jenkins instance on CloudBees Platform as a Service (PaaS) and it may be used in the same manner as with any other Jenkins deployment.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Relevant Documentation&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/IRC+Plugin"&gt;IRC plugin page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Instant+Messaging+Plugin"&gt;Instant Messaging plugin page&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;--Paul Sandoz, Developer&lt;br /&gt;&lt;div&gt;CloudBees&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.cloudbees.com/"&gt;www.cloudbees.com&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-1714538695338818432?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/1714538695338818432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/02/jenkins-irc-plugin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1714538695338818432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1714538695338818432'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/02/jenkins-irc-plugin.html' title='Jenkins IRC Plugin'/><author><name>Paul Sandoz</name><uri>http://www.blogger.com/profile/01376906263497983192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pfo8u-xIu3Y/TRDN8mq_LjI/AAAAAAAAAE4/HhYtw_vXYtM/S220/genes.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-rLSkkCT0YIA/Tzjlw7pYiVI/AAAAAAAAAH8/eNjSatqKipw/s72-c/Screen+shot+2012-02-13+at+11.27.49+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-1661943879240165590</id><published>2012-02-14T08:30:00.000-05:00</published><updated>2012-02-14T08:30:03.737-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='AnyCloud'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='Sacha'/><title type='text'>Solving the Private vs. Public PaaS Dichotomy: Discover CloudBees AnyCloud!</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-i4zJgo6zb8g/TznZVH8PfEI/AAAAAAAAAHI/MifZlx9p3aY/s1600/AnyCloud_Cloud_Diagram.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5708832959601015874" src="http://3.bp.blogspot.com/-i4zJgo6zb8g/TznZVH8PfEI/AAAAAAAAAHI/MifZlx9p3aY/s400/AnyCloud_Cloud_Diagram.jpg" style="cursor: pointer; float: left; height: 168px; margin-bottom: 10px; margin-left: 0px; margin-right: 10px; margin-top: 0px; text-align: justify; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;Demonstrating CloudBees' leadership in PaaS innovation, today we are announcing AnyCloud: a unique offering that will redefine and further broaden the PaaS market&lt;/span&gt;. AnyCloud provides the ability to have a unified view of your applications managed by CloudBees' PaaS, while physically deploying those on any infrastructure: public, hosted provider or even on-premise, in your own datacenter. Any cloud, anywhere.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A growing number of companies are increasingly turning to Platform as a Service (PaaS) as a way to improve their time-to-market, increase their agility and reduce their costs. The CloudBees Platform, for instance, provides application development, deployment and management services and eliminates much of the operations cost and IT hassles normally encountered by developers. And because it is available as a &lt;b&gt;&lt;i&gt;SERVICE&lt;/i&gt;&lt;/b&gt;, there is no need for you to setup either infrastructure or any software.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Unfortunately, for some companies, the promise of PaaS bashes up against the reality of enterprise constraints:&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;How can I use a PaaS and get low-latency access to data that sits on-premise and that I cannot move to the cloud?&lt;/li&gt;&lt;li style="text-align: justify;"&gt;How can I abide by security and privacy rules and still use PaaS?&lt;/li&gt;&lt;li style="text-align: justify;"&gt;How can I keep my processing and data in a specific region?&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;One solution to these problems is to a deploy a private PaaS – or “&lt;i&gt;Platform as a &lt;b&gt;Software&lt;/b&gt;&lt;/i&gt;” – a PaaS that you install, configure, patch and upgrade much like you do your existing middleware products. In doing so, IT is taking on another layer of software to maintain, update and pay for support on.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;a href="http://www.cloudbees.com/anycloud.cb"&gt;&lt;img border="0" height="420" src="http://2.bp.blogspot.com/-md5suMEl8PE/TzmDSy0_ZhI/AAAAAAAAACI/0flJlAdlJLI/s640/PaaS-Cost-Service.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The truth is that a key part of the promise of PaaS lies in the “S”, as in &lt;b&gt;&lt;i&gt;SERVICE&lt;/i&gt;&lt;/b&gt;.  When you choose a private PaaS path, you are forced into delivering the service for the PaaS yourself! Your IT team hopes it can forget everything it has learned about operating system and middleware configuration and support, but in reality it will have to be re-trained for something entirely new! You therefore continue to bear the infrastructure capital costs, in addition to the operational costs for maintaining the infrastructure.  Thus, as illustrated conceptually above, the potential operational efficiencies of PaaS compared to IaaS are masked by the continued burden for both the infrastructure itself as well as your continued operational obligations associated with it.  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In contrast, when you use a service provider, as opposed to a software vendor who is “enabling” &lt;i&gt;you&lt;/i&gt; to provide service, you get a number of benefits that lead to lower cost and better service:&lt;/div&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;&lt;b&gt;The service provider reduces your operational cost.&lt;/b&gt;  The expertise to manage the technical intersection between complex middleware and complex PaaS software is part of the provider’s responsibility, not yours.  You can focus better on your core business.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;b&gt;Service providers get better economies of scale.&lt;/b&gt;  The expertise they have in-house is leveraged across thousands of customers.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;b&gt;Service providers have an incentive to invest in operational efficiency.&lt;/b&gt; Any vendor has an incentive to improve its margins.&lt;/li&gt;&lt;/ol&gt;&lt;h2 style="text-align: justify;"&gt; Getting Rid of the Public vs. Private Dichotomy!&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;Consequently, companies considering using a PaaS face what has become a typical dichotomy:&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Either they can opt for a Public PaaS and enjoy all of the benefits of increased agility, much improved time-to-market and reduced costs, but not be able to move some of their applications onto that PaaS for technical/latency or privacy issues;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Or they can opt for a Private “&lt;i&gt;PaaSoftware&lt;/i&gt;” in order to satisfy their technical and privacy requirements, but they will most probably never see the full benefit from increased agility, time-to-market or reduced-cost compared to their existing middleware setup (au contraire).&lt;/li&gt;&lt;/ul&gt;&lt;h2 style="text-align: justify;"&gt; Announcing CloudBees AnyCloud&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;As a solution to this recurring problem, today, as the Java PaaS innovation leader, we are announcing &lt;b&gt;&lt;i&gt;CloudBees’ AnyCloud&lt;/i&gt;&lt;/b&gt;. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The &lt;b&gt;AnyCloud&lt;/b&gt; architecture solves the above dichotomy by providing the best of both worlds: a fully-serviced PaaS (by CloudBees) that enables a multitude of deployment scenarios &lt;b&gt;at the same time&lt;/b&gt;: on public cloud infrastructure (IaaS) in multiple regions, on traditional hosting providers (on vSphere for example) as well as on-premise, on your own servers, inside your own data center!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;a href="http://www.cloudbees.com/anycloud.cb"&gt;&lt;img border="0" height="394" src="http://3.bp.blogspot.com/-akxmQ31uFMU/TzmDeXeyzHI/AAAAAAAAACQ/bog7kwHMBCE/s640/AnyCloud-Architecture.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;(&lt;i&gt;NOTE: More information on the AnyCloud architecture is available in our &lt;a href="http://www.cloudbees.com/anycloud.cb"&gt;CloudBees AnyCloud white paper&lt;/a&gt;.&lt;/i&gt;)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;By opting for a supported CloudBees AnyCloud hosting provider or by registering servers in your data center, CloudBees AnyCloud delivers the operational cost savings and cloud efficiency of a fully-managed PaaS to your business – on any cloud – while satisfying your technical and privacy constraints.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;With AnyCloud, your developers and lines of business get the benefits of zero-friction development and deployment and faster-time-to-market while getting low-latency access to your most important on-premise resources and existing investments.  Same if you’re concerned about keeping your applications and data in a specific region due to privacy or regulatory concerns: AnyCloud is the answer. And if you already have a trusted hosting provider or preferred infrastructure cloud vendor, AnyCloud helps you enjoy the benefits of a fully serviced PaaS with the vendor relationship and investment you’re comfortable with.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;More information on the AnyCloud architecture is available in our &lt;a href="http://www.cloudbees.com/anycloud.cb"&gt;CloudBees AnyCloud white paper&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In addition to our existing production US-based offerings, we are currently rolling out support for AWS in Europe, &lt;a href="http://www.ovh.com/fr/serveurs_dedies/"&gt;OVH in Europe&lt;/a&gt;, as well as AnyCloud support in your own datacenter. If you are interested in AnyCloud, &lt;a href="mailto:sales@cloudbees.com"&gt;just contact us&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Onward,&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sacha&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sacha Labourey, CEO and Founder&lt;/div&gt;&lt;div style="text-align: justify;"&gt;CloudBees&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.cloudbees.com/"&gt;www.cloudbees.com&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-1661943879240165590?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/1661943879240165590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/02/solving-private-vs-public-paas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1661943879240165590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1661943879240165590'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/02/solving-private-vs-public-paas.html' title='Solving the Private vs. Public PaaS Dichotomy: Discover CloudBees AnyCloud!'/><author><name>Sacha Labourey</name><uri>http://www.blogger.com/profile/03949123377681627339</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-i4zJgo6zb8g/TznZVH8PfEI/AAAAAAAAAHI/MifZlx9p3aY/s72-c/AnyCloud_Cloud_Diagram.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-2045999058856404123</id><published>2012-02-08T12:09:00.007-05:00</published><updated>2012-02-18T18:12:13.457-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='RUN at cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='DEV at cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='Sacha'/><title type='text'>New RUN Pricing (and Venti Chai Latte)</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-dUwePauHaPc/TzOFUvz0TII/AAAAAAAAACA/9N4Fa40ezgM/s1600/bee_with_Starbucks.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-dUwePauHaPc/TzOFUvz0TII/AAAAAAAAACA/9N4Fa40ezgM/s1600/bee_with_Starbucks.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Since we started CloudBees, we understood one essential part of the value of a PaaS was to &lt;a href="http://www.cloudbees.com/platform-overview.cb"&gt;abstract IT infrastructure away from developers&lt;/a&gt;. Developers shouldn’t have to worry about server provisioning, operating systems, application servers, firewalls, load-balancers, etc. But PaaS offerings are not just about provisioning IT resources, they are also about how your applications get mapped onto those resources. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To that end, at CloudBees, we have defined our own unit of compute, an &lt;i&gt;app-cell&lt;/i&gt;. The app-cell is a much more fine-grain concept than what a CPU core is, yet provides enough capacity for decent work to be performed (our testing shows that a basic web application accessing a database can handle up to 250 requests per second on a single app-cell). That’s for the “how much” part. But we can also finely define the time those resources get allocated to your application, based on your application requirements. As an analogy, while IT infrastructure providers like AWS could only rent you a bus for an entire week, CloudBees is able to rent you a single seat, by the minute. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This technical leadership, coupled with the high number of accounts using our platform, obviously leads to great economies of scale.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Consequently, a few weeks ago, &lt;a href="http://blog.cloudbees.com/2011/12/enhanced-pricing-and-packaging-for.html"&gt;we announced that we were significantly dropping DEV@cloud prices&lt;/a&gt; and were providing a fully serviced “Jenkins as a Service” continuous integration offering for LESS than you would pay doing it yourself, on-premise, or by renting machines at AWS. Just check, our prices start at … 0$. That’s a hard price to beat. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Today, we are rolling out our new pricing structure to RUN@cloud and as you will see, it is a significant drop! &lt;a href="http://www.cloudbees.com/pricing-standard-services.cb"&gt;Our new pricing&lt;/a&gt; will be available at two subscription levels:&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;b&gt;Base&lt;/b&gt;: this subscription level is fine if you mostly need a place to run your application, but do not care about sophisticated clustering setup, support tickets, etc.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;b&gt;Enterprise&lt;/b&gt;: this offers all of the CloudBees features, sophisticated clustering, bigger memory sizes, technical support, etc. &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;While the Base level will be available in a couple of weeks, the Enterprise level is available today. Our current customers have been converted to this new Enterprise level and will automatically benefit from a 62% cost reduction. Our new Base level (once available), will show a 74% discount compared to our current pricing!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This new pricing puts the deployment of a simple Java application with a database at $9.50/month, and a fully clustered HA application at $19/month, much lower than what you could achieve by directly renting EC2 servers for example (without even talking about the time you’d have to spend supporting this environment).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;We are also announcing the ability to deploy the CloudBees PaaS &lt;a href="http://www.cloudbees.com/pricing-dedicated-services.cb"&gt;on your own dedicated machines&lt;/a&gt; on AWS, and let us manage your applications on that pool of resources - contact us if you are interested in this. We have customers doing this today.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This year, the CloudBees team has set itself the objective to show the Java world that using CloudBees’ PaaS is cheaper, better and faster. This announcement clearly demonstrates the first one. As my colleague Michael Neale put it: “If you find something cheaper, it is probably a Venti Chai Latte.” &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Onward,&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sacha&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sacha Labourey, CEO&lt;/div&gt;&lt;div style="text-align: justify;"&gt;CloudBees&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.cloudbees.com/"&gt;www.cloudbees.com&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-2045999058856404123?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/2045999058856404123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/02/new-run-pricing-and-venti-chai-latte.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2045999058856404123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2045999058856404123'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/02/new-run-pricing-and-venti-chai-latte.html' title='New RUN Pricing (and Venti Chai Latte)'/><author><name>Heidi Gilmore</name><uri>http://www.blogger.com/profile/08832406512250828531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-dUwePauHaPc/TzOFUvz0TII/AAAAAAAAACA/9N4Fa40ezgM/s72-c/bee_with_Starbucks.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-1023868586186333769</id><published>2012-02-02T17:42:00.000-05:00</published><updated>2012-02-02T17:42:00.253-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaEE'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><category scheme='http://www.blogger.com/atom/ns#' term='Chariot Solutions'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><title type='text'>A Festival of Emerging Technology in Philly</title><content type='html'>CloudBees is proud to be sponsoring the &lt;a href="http://phillyemergingtech.com/2012" target="_blank"&gt;7th Annual Philly Emerging Tech Conference&lt;/a&gt;, April 10 &amp;amp; 11th in Philadelphia. If you're in the vicinity, check out this popular conference, hosted by our friends at &lt;a href="http://chariotsolutions.com/" target="_blank"&gt;Chariot Solutions&lt;/a&gt;. It sells out most years, so don't wait to &lt;a href="http://phillyemergingtech.com/2012/register" target="_blank"&gt;sign up&lt;/a&gt; for this 2-day, 5-track technology extravaganza.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lsZo-FMRNxM/TysOd-YpCWI/AAAAAAAAAXU/fCgOlsVsrxM/s1600/ETE_Keynote_2010-304px-color.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="268" src="http://3.bp.blogspot.com/-lsZo-FMRNxM/TysOd-YpCWI/AAAAAAAAAXU/fCgOlsVsrxM/s400/ETE_Keynote_2010-304px-color.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The Emerging Tech Conference (a.k.a. Emerging Technologies for the Enterprise) covers topics ranging from Java EE in the cloud to the Play Framework to cross-platform mobile development to NoSQL to HTML5 to functional programming patterns. Check out the &lt;a href="http://phillyemergingtech.com/2012/sessions" target="_blank"&gt;full session list here&lt;/a&gt; and the &lt;a href="http://phillyemergingtech.com/2012/speakers%20" target="_blank"&gt;list of expert presenters here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Early Bird rate of $375 per person is available through February 15.&lt;/b&gt; If you can take advantage of the group discount -- 4 colleagues or friends, not necessarily from the same company –- register at the same time and the price drops to $281.25 per person.&lt;br /&gt;&lt;br /&gt;Sessions covering a wide array of technologies complement the Java and JVM-based focus. In addition to keynote speakers Chad Fowler (VP Engineering, LivingSocial) and Alex Payne (CTO, Simple Finance), the conference features Yukihiro Matsumoto (creator of the Ruby Programming Language); Douglas Crockford (Senior JavaScript Architect, Yahoo); Yehuda Katz (Ember.js and jQuery core developer); Elika Etemad (W3C CSS Working Group); James Shore (author of The Art of Agile Development); and many others. Keep an eye on the site, because more speakers and session abstracts will be added over the next few weeks.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://phillyemergingtech.com/2012/register" target="_blank"&gt;Register and attend!&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-1023868586186333769?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/1023868586186333769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/02/festival-of-emerging-technology-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1023868586186333769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1023868586186333769'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/02/festival-of-emerging-technology-in.html' title='A Festival of Emerging Technology in Philly'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-lsZo-FMRNxM/TysOd-YpCWI/AAAAAAAAAXU/fCgOlsVsrxM/s72-c/ETE_Keynote_2010-304px-color.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-919231287147496808</id><published>2012-02-02T09:01:00.012-05:00</published><updated>2012-02-06T09:55:32.245-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='DEV at cloud'/><title type='text'>Tasks and Warnings with Jenkins</title><content type='html'>&lt;b&gt;Overview&lt;/b&gt;&lt;br /&gt;Jenkins is a highly extensible platform and, in some cases, plugins are the foundation for further plugins.&lt;br /&gt;&lt;br /&gt;One such example is the plugin for &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Static+Code+Analysis+Plug-ins"&gt;static code analysis&lt;/a&gt;. This plugin provides the necessary foundation for reporting and presenting of static analysis produced from building jobs, but does not in and of itself do any analysis. That is the responsibility of additional plugins which analyze files in the build workspace, such as source code and, if appropriate, the results of building that source code.&lt;br /&gt;&lt;br /&gt;For example, there is the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/FindBugs+Plugin"&gt;FindBugs plugin&lt;/a&gt;, that runs &lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt; which looks for bugs in Java code. FindBugs is an excellent utility for identifying problems in Java code. Combine FindBugs with Jenkins and those problems can be easily viewed, monitored and tracked over builds.&lt;br /&gt;&lt;br /&gt;However, this blog entry will focus on two other static analysis plugins: the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin"&gt;Task Scanner plugin&lt;/a&gt;; and the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Warnings+Plugin"&gt;Warnings plugin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Stable Release Versions&lt;/b&gt;&lt;br /&gt;The latest release of the Task Scanner plugin is 4.26 and was released in December 2011. It  has no known issues. The latest release of the Warnings plugin is 3.27 and was released in January 2012; it has known issues.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Requirements for Plugin-Use&lt;/b&gt;&lt;br /&gt;Jenkins 1.409 or newer and the utility plugin "analysis-core" (called "Static Analysis Utilities").&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;How to Use&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The Task Scanner plugin will scan the workspace for files and check if lines in those files contain certain strings or tags.&lt;/div&gt;&lt;br /&gt;I created a job on Jenkins to build Jenkins and configured the Task Scanner for the job as follows:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RZk1ERFzMVQ/Tyq01viLsTI/AAAAAAAAAGs/iKS5wddNRjE/s1600/Screen+shot+2012-02-02+at+5.07.13+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-RZk1ERFzMVQ/Tyq01viLsTI/AAAAAAAAAGs/iKS5wddNRjE/s1600/Screen+shot+2012-02-02+at+5.07.13+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;after building, the results can be viewed by clicking on the "Open Tasks" link on the left hand side of the screen:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XYphnn1OT8E/Tyq3YbgRHDI/AAAAAAAAAG0/e-Dj4UBjl4U/s1600/Screen+shot+2012-02-02+at+5.17.30+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="395" src="http://3.bp.blogspot.com/-XYphnn1OT8E/Tyq3YbgRHDI/AAAAAAAAAG0/e-Dj4UBjl4U/s640/Screen+shot+2012-02-02+at+5.17.30+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We can observe that the Jenkins code base has 15 high priority tasks ("FIXME"), 330 normal priority tasks ("TODO") and 425 low priority tasks ("&lt;span style="font-family:'Courier New', Courier, monospace;"&gt;@deprecated&lt;/span&gt;").  It is not surprising that there are so many &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;@deprecated&lt;/span&gt; tasks, Jenkins has maintained backwards compatibility for a long time.&lt;br /&gt;&lt;br /&gt;Given a particular task, it is possible to drill down and view the source:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Nm40pRhyWOQ/Tyq5zG-XquI/AAAAAAAAAG8/Iw7aNx_NYwc/s1600/Screen+shot+2012-02-02+at+5.28.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://3.bp.blogspot.com/-Nm40pRhyWOQ/Tyq5zG-XquI/AAAAAAAAAG8/Iw7aNx_NYwc/s640/Screen+shot+2012-02-02+at+5.28.23+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The (Compiler) Warnings plugin can scan, using selected parsers, the build console log and workspace files and report compiler warnings. There are many parsers, if Cobol is your language of choice (or not as the case is highly likely to be) there is a parser for that.&lt;br /&gt;&lt;br /&gt;In this case, I have configured the previous Jenkins job to scan for compiler warnings in the console log:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PfMBxjejWto/Tyuy4aYgaMI/AAAAAAAAAHM/F5-WhXQWagY/s1600/Screen+shot+2012-02-03+at+11.11.21+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-PfMBxjejWto/Tyuy4aYgaMI/AAAAAAAAAHM/F5-WhXQWagY/s640/Screen+shot+2012-02-03+at+11.11.21+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;To ensure that such warnings are generated by the Java compiler, I need to tweak the Jenkins pom file:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family:'Courier New', Courier, monospace;"&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt; &amp;lt;showDeprecation&amp;gt;true&amp;lt;/showDeprecation&amp;gt;&lt;br /&gt; &amp;lt;showWarnings&amp;gt;true&amp;lt;/showWarnings&amp;gt;&lt;br /&gt;&lt;span style="background-;color:yellow;"&gt;    &amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt; &amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;After building, a summary of the results can viewed from the build status page:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ha2J2JfAcmA/Tyu0knSg55I/AAAAAAAAAHU/FrApefuEsPA/s1600/Screen+shot+2012-02-03+at+11.18.29+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://1.bp.blogspot.com/-ha2J2JfAcmA/Tyu0knSg55I/AAAAAAAAAHU/FrApefuEsPA/s640/Screen+shot+2012-02-03+at+11.18.29+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The plugin detected 213 warnings. Notice that the status of the open tasks from the Task Scanner plugin are also displayed.&lt;br /&gt;&lt;br /&gt;A summary of the warnings can be viewed by clicking on the "Compiler Warnings" link on the left hand side:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-9dFM9Tk0J40/Tyu1OmiOdgI/AAAAAAAAAHc/ti9_qeqv3yk/s1600/Screen+shot+2012-02-03+at+11.21.27+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://4.bp.blogspot.com/-9dFM9Tk0J40/Tyu1OmiOdgI/AAAAAAAAAHc/ti9_qeqv3yk/s640/Screen+shot+2012-02-03+at+11.21.27+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Looks like some classes in the Jenkins core module could be cleaned up to use non-deprecated features. Drilling down we can see where certain deprecated features are used. For example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-K3Ic0Ck3qgk/Tyu2LSjmKcI/AAAAAAAAAHk/PkTWAPPouYo/s1600/Screen+shot+2012-02-03+at+11.25.02+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="282" src="http://2.bp.blogspot.com/-K3Ic0Ck3qgk/Tyu2LSjmKcI/AAAAAAAAAHk/PkTWAPPouYo/s640/Screen+shot+2012-02-03+at+11.25.02+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MfPsZzluQt8/Tyu2LuCMf3I/AAAAAAAAAHs/wfg2PvcpSMA/s1600/Screen+shot+2012-02-03+at+11.25.19+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="134" src="http://2.bp.blogspot.com/-MfPsZzluQt8/Tyu2LuCMf3I/AAAAAAAAAHs/wfg2PvcpSMA/s640/Screen+shot+2012-02-03+at+11.25.19+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;As presented these plugins are rather useful to track tasks and warnings in source code. They are quick to set up, even for a large project such as Jenkins.&lt;br /&gt;&lt;br /&gt;Finally, the results of both the tasks and compiler warnings can be combined with the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Analysis+Collector+Plugin"&gt;Static Analysis &lt;/a&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Analysis+Collector+Plugin"&gt;Collector plugin&lt;/a&gt;. Combine it with the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Dashboard+View"&gt;DashBoard View plugin&lt;/a&gt; and a summary can be presented:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-LszaEmN_QZI/Tyu8-t4MHYI/AAAAAAAAAH0/oNopNRjF1sI/s1600/Screen+shot+2012-02-03+at+11.54.26+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://2.bp.blogspot.com/-LszaEmN_QZI/Tyu8-t4MHYI/AAAAAAAAAH0/oNopNRjF1sI/s640/Screen+shot+2012-02-03+at+11.54.26+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;        &lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;How to Use the Plugins on DEV@cloud/RUN@cloud?&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;All  plugins previously mentioned are available to install on a DEV@cloud Jenkins instance on CloudBees' Platform as a Service (PaaS) and they may be used in the same manner as with any other Jenkins deployment.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Relevant Documentation&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Static+Code+Analysis+Plug-ins"&gt;Static code analysis page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin"&gt;Task Scanner plugin page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Warnings+Plugin"&gt;Warnings plugin page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Analysis+Collector+Plugin"&gt;Static analysis collector page&lt;/a&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Analysis+Collector+Plugin"&gt;Collector plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Dashboard+View"&gt;DashBoard view page&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;--Paul Sandoz, Developer&lt;div&gt;CloudBees&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.cloudbees.com/"&gt;www.cloudbees.com&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-919231287147496808?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/919231287147496808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/02/tasks-and-warnings-with-jenkins.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/919231287147496808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/919231287147496808'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/02/tasks-and-warnings-with-jenkins.html' title='Tasks and Warnings with Jenkins'/><author><name>Paul Sandoz</name><uri>http://www.blogger.com/profile/01376906263497983192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pfo8u-xIu3Y/TRDN8mq_LjI/AAAAAAAAAE4/HhYtw_vXYtM/S220/genes.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-RZk1ERFzMVQ/Tyq01viLsTI/AAAAAAAAAGs/iKS5wddNRjE/s72-c/Screen+shot+2012-02-02+at+5.07.13+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-5445868142296599623</id><published>2012-02-01T10:29:00.000-05:00</published><updated>2012-02-19T16:27:13.939-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dependency'/><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='kohsuke'/><title type='text'>Dependency Graph Viewer for Jenkins</title><content type='html'>In &lt;a href="http://jenkins-ci.org/"&gt;Jenkins&lt;/a&gt;, jobs are the smallest unit of computation. For simple use of Jenkins, one job (and its checkout/build/report cycle) can suffice, but more sophisticated automation almost always involves multiple jobs that are working together.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Dependency+Graph+View+Plugin"&gt;The Dependency Graph Viewer plugin for Jenkins&lt;/a&gt;, by Stefan Wolf, makes it easy to deal with such multi-job workflow/activity by visualizing the relationship, as you can see below:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-Q_DqEyIr9LwQWSA4zcvcePwSVicx_LxhP5kMcRIOYaqrC70FM0f_eBTstsRIGGZtKjGhPyrdqvPSQxGtMlrroEy5-y4u1yTqfAda3gJW0pkB3L51uw" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Setting Up&lt;/h2&gt;This plugin uses &lt;a href="http://www.graphviz.org/"&gt;GraphViz&lt;/a&gt;, a C++ application that performs the actual layout of nodes and edges in the graph. This tool does a pretty good job of figuring out the "intuitive" layout most of the time.&lt;br /&gt;&lt;br /&gt;Because this is a native application, GraphViz needs to be installed separately. Windows, Mac, and OS X users can do so from &lt;a href="http://www.graphviz.org/Download.php"&gt;the GraphViz website&lt;/a&gt;. Linux users should be able to install this from their package manager, since it's a very popular tool. Other than GraphViz, this plugin requires no configuration. A plugin not requiring any configuration also means it can be removed side-effect free, so you can try this plugin out in your production environment without worrying about possible data loss.&lt;br /&gt;&lt;h2&gt;How to Use It&lt;/h2&gt;Once installed, you'll see a "dependency graph" action link on the left in every job and view, which displays the relevant upstream/downstream jobs for the current job in question (or jobs in the current view in question). The graph is clickable, and if you do click on it, you can jump to the top page of that job. This makes it easy to navigate around in a complex job setup.&lt;br /&gt;&lt;h2&gt;Upcoming Features&lt;/h2&gt;The upcoming version 0.3 expands this plugin to recognize other kind of inter-job relationships that go beyond upstream/downstream relationships, such as the "subroutine" relationship induced by &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin"&gt;the parameterized build trigger plugin&lt;/a&gt;, or the "producer/consumer" relationship induced by &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin"&gt;the copy artifact plugin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Eventually, I think it should be turned into an extension point to enable other plugins to add all kinds of interesting relationships here.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.cloudbees.com/company-team.cb#KohsukeKawaguchi"&gt;Kohsuke Kawaguchi&lt;/a&gt;&lt;br /&gt;Jenkins Founder&lt;br /&gt;&lt;div&gt;Elite Developer &amp;amp; Architect, CloudBees&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-5445868142296599623?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/5445868142296599623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/dependency-graph-viewer-for-jenkins.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/5445868142296599623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/5445868142296599623'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/dependency-graph-viewer-for-jenkins.html' title='Dependency Graph Viewer for Jenkins'/><author><name>Kohsuke Kawaguchi</name><uri>http://www.blogger.com/profile/00023761903151743201</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_rF9tjQUwkVo/TTB4kcw_hzI/AAAAAAAAAdU/h1utHP8odWk/s1600-R/self2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-3500553267165421112</id><published>2012-01-30T14:39:00.000-05:00</published><updated>2012-01-30T10:40:49.859-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Controlling What You See (with the View Job Filters Jenkins Plugin)</title><content type='html'>&lt;b&gt;Overview&lt;/b&gt;&lt;a href="http://3.bp.blogspot.com/-wt2Q23h3bTw/TxVbeQwigXI/AAAAAAAAACA/E6LWympD1Jw/s1600/view-filters.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5698561478959989106" src="http://3.bp.blogspot.com/-wt2Q23h3bTw/TxVbeQwigXI/AAAAAAAAACA/E6LWympD1Jw/s200/view-filters.png" style="cursor: hand; cursor: pointer; float: right; height: 200px; margin: 0 0 10px 10px; width: 145px;" /&gt;&lt;/a&gt;&lt;br /&gt;When you first start using Jenkins for continuous integration, you will most likely have only a few projects, and the default main screen will suit your needs perfectly.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;After a while, however, you will have more and more jobs in your Jenkins server and the default screen may no longer be adequate.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Stable Release Version&lt;/b&gt;&lt;br /&gt;The latest release is 1.18 which was released in September 2011 and has no known issues.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Requirements for Plugin-Use&lt;/b&gt;&lt;br /&gt;Jenkins 1.398 or newer&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Step-by-Step Instructions on How to Use the View Job Filters Plugin:&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ry_-8_v1dQ0/Tx_QBiu7Q3I/AAAAAAAAACU/F0xYnqbrzGE/s1600/Screen+shot+2012-01-25+at+09.45.59.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://4.bp.blogspot.com/-ry_-8_v1dQ0/Tx_QBiu7Q3I/AAAAAAAAACU/F0xYnqbrzGE/s200/Screen+shot+2012-01-25+at+09.45.59.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Go to your Jenkins instances root page.&lt;/li&gt;&lt;li&gt;If your Jenkins instance has security enabled, login as a user who has the &lt;span style=" ;font-family:'courier new';font-size:xx-small;"&gt;Overall | Administer&lt;/span&gt; permission.&lt;/li&gt;&lt;li&gt;Select the &lt;span style=" ;font-family:'courier new';font-size:xx-small;"&gt;Manage Jenkins&lt;/span&gt; link on the left-hand side of the screen.&lt;/li&gt;&lt;li&gt;Select the &lt;span style=" ;font-family:'courier new';font-size:xx-small;"&gt;Manage Plugins&lt;/span&gt; link.&lt;/li&gt;&lt;li&gt;On the &lt;span style=" ;font-family:'courier new';font-size:xx-small;"&gt;Available&lt;/span&gt; tab, select the &lt;span style=" ;font-family:'courier new';font-size:xx-small;"&gt;View Job Filters Plugin&lt;/span&gt; and click the &lt;span style=" ;font-family:'courier new';font-size:xx-small;"&gt;Download and Install&lt;/span&gt; button at the bottom of the page.&lt;/li&gt;&lt;li&gt;(If you are using a version of Jenkins prior to 1.442) Restart Jenkins once the plugins are downloaded. &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;/div&gt;&lt;div&gt;This plugin does not have any global configuration options, instead it adds additional functionality to the views available within Jenkins.&lt;br /&gt;&lt;br /&gt;If you have not created any views, then your system will be using the default “All” view. This view is read only (see the links at the bottom of this page for how to edit your “All” view). So in order to get started with this plugin, you first need to create a view.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xETOacCbvlY/Tx_R5oWvWdI/AAAAAAAAACc/Rh75HIVYgG4/s1600/Screen+shot+2012-01-25+at+09.50.57.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://2.bp.blogspot.com/-xETOacCbvlY/Tx_R5oWvWdI/AAAAAAAAACc/Rh75HIVYgG4/s200/Screen+shot+2012-01-25+at+09.50.57.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;From your Jenkins instance's root page, there is a tab called “+” at the end of all the tabs. Click on that tab to create a new view.&lt;/li&gt;&lt;li&gt;Give the view a name, and select the type of view you want to create. View types are an extension point that other plugins can contribute. Jenkins has one built in view type, List View.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;If you already have created a view, just select that view and click on the “Edit View” button. In either case you should now be at the following screen:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--UUG_J1T6aU/Tx_R_S__5lI/AAAAAAAAACk/gen-lNTGBVI/s1600/Screen+shot+2012-01-25+at+09.51.44.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="306" src="http://4.bp.blogspot.com/--UUG_J1T6aU/Tx_R_S__5lI/AAAAAAAAACk/gen-lNTGBVI/s400/Screen+shot+2012-01-25+at+09.51.44.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;View Configuration screen with the View Jobs Filters plugin installed, while in the process of adding a view job filter.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Jenkins has some rudimentary filtering built in, essentially: the status filter; the manual set of check-boxes; and the use a regular expression. So by way of comparison, and so that you know where any issues you might have are originating from, here is the same screen without the View Jobs Filters plugin installed:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5H38MMe8l9M/Tx_TCqi02PI/AAAAAAAAAC0/z_nXVlZuxkM/s1600/Screen+shot+2012-01-25+at+10.01.20.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="306" src="http://4.bp.blogspot.com/-5H38MMe8l9M/Tx_TCqi02PI/AAAAAAAAAC0/z_nXVlZuxkM/s400/Screen+shot+2012-01-25+at+10.01.20.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;View Configuration screen &lt;b&gt;&lt;i&gt;without&lt;/i&gt;&lt;/b&gt; the View Jobs Filters plugin&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To start filtering the jobs in your view, you click on the Add Job Filter button, and select the type of filter to add. There are multiple types of filters, which I will describe in a moment, but first I need to explain how the filters work.&lt;br /&gt;&lt;br /&gt;A view starts off with an empty set of jobs. To this is added all the selected jobs, followed by any jobs selected by the regular expression and then this initial set of jobs is filtered based on the built-in status filter. The View Job Filters then proceeds to operate on the set of jobs, adding and removing jobs in sequence. Most of the filters provided by the View Job Filters have a “Match Type” field, which determines whether they add or remove jobs from the set of jobs. The filters apply in the order in which you define them (and you can re-order them by drag and drop). Once all the filters have been applied, you have a final set of jobs that will be displayed in the view.&lt;br /&gt;&lt;br /&gt;The Match Types are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Include Matched - adds to the set of jobs, any jobs not already in the set which the filter rule matches.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Include Unmatched - adds to the set of jobs, any jobs not already in the set which the filter rule does not match.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Exclude Matched - checks all the jobs in the set of jobs, removing any which match the filter rule.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Exclude Unmatched - checks all the jobs in the set of jobs, removing any which do not match the filter rule.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;This is a very powerful mechanism that allows you to create a view containing only the jobs you want to see... though at times it can seem like you are back in school doing set theory while trying to figure out exactly how to cut those &lt;a href="http://en.wikipedia.org/wiki/Venn_diagram"&gt;Venn Diagrams&lt;/a&gt; to get at the set of jobs that you want to see. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The View Job Filters plugin exposes an extension point for other plugins to add additional types of filters, but here are the types of filters that are currently built into the plugin:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;All Jobs: This adds all the jobs to this view. You could select all the checkboxes, you could specify a regex of “.*”, but this is by far the easiest way to start with all the jobs when either the filters you will be adding will be trimming back, or when you want to customize the “All” view.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Build Statuses Filter: This adds/removes jobs based on their current status, i.e. whether they are currently building; were never built; or are currently in the build queue. By using the Include/Exclude &lt;i&gt;Unmatched&lt;/i&gt; match type you can invert the selection, i.e. whether they are currently not building; have been built at least once; or are not in the build queue.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Build Trend Filter: This adds/removes jobs based on recent events. In some cases the Build Statuses Filter or the Job Statuses Filter will be a simpler way to get the same result. Some of the criteria you can construct with this filter are:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;All jobs that ran in the last 5 hours;&lt;/li&gt;&lt;li&gt;All jobs that have been unstable for the last 7 builds.&lt;/li&gt;&lt;li&gt;All jobs that have at least one stable build in the 10 days.&lt;/li&gt;&lt;li&gt;All jobs that have not been run in the last 30 days.&lt;/li&gt;&lt;li&gt;All jobs that have been triggered by a SCM change within the last week.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Job Statuses Filter: This adds/removes jobs based on the job status, i.e. Stable; Failed; Unstable; Aborted; Disabled.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Job Type Filter: This adds/removes jobs based on the type of job. For example, I use this filter to identify any Maven 2/3 project type jobs so that I can &lt;strike&gt;beat-up&lt;/strike&gt; give out to the people creating those jobs thereby continuing &lt;a href="http://jenkins.361315.n4.nabble.com/plugins-disabled-when-using-m2-build-td367093.html"&gt;my long standing disagreement with Kohsuke over whether the Maven 2/3 project type is a good idea or not&lt;/a&gt; ;-)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Logged-in User Relevance Filter: This adds/removes jobs based on their relevance to the logged in user. For example: matching jobs that were started by the user, or where the user committed changes to the source code of the job; matching jobs with a name that contains the user's name or login id.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Other Views Filter: This adds/removes jobs based on whether they are in a different view's set of jobs. &lt;b&gt;Note:&lt;/b&gt; you can create a circular logic of death if View A has another views filter based on View B which has another views filter based on View A. There are longer and shorter ways to such a circular logic, but it all amounts to a dog chasing its tail.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Parameterized Jobs Filters: This allows adding/removing parameterized jobs based on whether regular expressions match the job parameters. If you need to use this one, you are doing very fancy stuff altogether. An example use case would be where you have a job parameter that selects the database that the job uses for running tests against, you could create a view which selects all the jobs targeting a specific database.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Regular Expression Job Filter: This allows using a regular expression to match against one of: the job name; the job description; the SCM configuration (i.e. select a specific branch); the email recipients; the Maven configuration; or the job schedule.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SCM Type Filter: This allows filtering based on the SCM type, for example to identify all the projects still using CVS or all the projects that have migrated to GIT.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unclassified Jobs: This allows finding all the jobs that are not in a view already. &lt;b&gt;Note:&lt;/b&gt; you can create a circular logic of death, so if you are using this filter, make sure you put it in &lt;i&gt;one and only one&lt;/i&gt; view.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;User Permissions for Jobs: This allows filtering jobs based on the logged in user's permissions for the job, i.e. whether they can: configure; build; or access the job's workspace&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;Once you have created your chain of filters, you can just save the view to see the set of jobs in that view.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tips &amp;amp; Tricks, How to Use it on DEV/RUN&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Start simple - this is a very powerful plugin, and while you can build very complex chains of filters, e.g. a view of &lt;i&gt;All Matrix build jobs which are in the build queue and have at least one non-stable build in the last week, are currently stable, have been started by the current user, are not in view B, have a build parameter with the name matching “[dD]atabase” and a value of “test2” where the SCM is matching “svn:.*/foobar/.*” and which the currently logged in user has not got the ability to configure&lt;/i&gt; may make perfect sense to you, but maybe you should start with something a little simpler first, and work your way up to such complexity... you really need to have 100's of jobs before very complex filters become necessary.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unclassified Jobs and Other Views Filter should be used with care.&lt;b&gt; &lt;/b&gt;Both of these filters have the capacity to create circular logic loops. If you use one of them in one and only one view, you have nothing to worry about, but once you think you need to use another one, break out your set theory math book from school to make sure you won't be creating a circular logic loop.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When you have a system with more than about 25-50 jobs, the default “All” view can become useless, as it can be hard to find the jobs you want. The Jenkins Wiki describes how you can &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Editing+or+Replacing+the+All+View"&gt;edit or replace the “All” view&lt;/a&gt;. Alternatively you can keep the “All” view but just pick a different view as the default view from the main Jenkins configuration screen. It can be useful to have the default view just show jobs that are relevant to the logged in user.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The View Filters plugin is not currently available on DEV@cloud, but will be shortly. Installation will be just as it is for a standalone Jenkins instance.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you are creating views which are filtered based on job parameters, or based on being relevant to the currently logged in user, you may want to use the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Build+Filter+%28Wrapper%29+Column"&gt;Build Filter Wrapper column&lt;/a&gt; feature. Some examples might help:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;You create a view which consists of all jobs that the currently logged in user committed to in the past week. You use the Build Filter Wrapper column to replace the default Status, Weather and Last Success/Failure columns so that they only display the results from the builds that the currently logged in user committed to. That way the logged in user can see which builds they broke, as opposed to builds that they committed to recently but that didn't break.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You create a view which consists of all jobs that have pushed code into the production server (i.e. where the “deployment target” parameter was equal to “production” or some such criteria). You use the Build Filter Wrapper column to replace the default Status, Weather and Last Success/Failure columns so that they only display the results from the actual deployments into production and the subsequent deployments into test are filtered out of the view... that way if the screen is full of blue balls and sunny skies, you are a happy camper! &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Known Issues&lt;/b&gt;&lt;/div&gt;&lt;div&gt;None.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Relevant Documentation&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/View+Job+Filters"&gt;The Jenkins Plugin Wiki page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Build+Filter+%28Wrapper%29+Column"&gt;The Build Filter Wrapper Column Wiki page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Editing+or+Replacing+the+All+View"&gt;Editing or Replacing the All View&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;--Stephen Connolly, Developer&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;CloudBees&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-3500553267165421112?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/3500553267165421112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/controlling-what-you-see-with-view-job.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3500553267165421112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3500553267165421112'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/controlling-what-you-see-with-view-job.html' title='Controlling What You See (with the View Job Filters Jenkins Plugin)'/><author><name>Stephen Connolly</name><uri>http://www.blogger.com/profile/13294521344496292534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-hT1p5GV_zsE/Thqy7e6O6rI/AAAAAAAAAAg/u_WyNZsGv4k/s220/me-120x120-cropped.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-wt2Q23h3bTw/TxVbeQwigXI/AAAAAAAAACA/E6LWympD1Jw/s72-c/view-filters.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-2416071289942241856</id><published>2012-01-30T12:35:00.000-05:00</published><updated>2012-01-30T12:37:56.083-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uberSVN'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='partner'/><category scheme='http://www.blogger.com/atom/ns#' term='WANdisco'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins support'/><title type='text'>Jenkins Support Comes to WANdisco’s uberSVN Platform</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-u2L8_agP628/TyMKj0ua_pI/AAAAAAAAAW8/uJD3lMfBp8s/s1600/jenkins-support-animated.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-u2L8_agP628/TyMKj0ua_pI/AAAAAAAAAW8/uJD3lMfBp8s/s1600/jenkins-support-animated.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If you use &lt;a href="http://www.ubersvn.com/" target="_blank"&gt;uberSVN&lt;/a&gt;, we have good news - now it's even easier to use Jenkins with it! Last year, our friends at WANdisco announced that Jenkins is fully integrated with uberSVN and &lt;a href="http://www.ubersvn.com/apps" target="_blank"&gt;available in the uberAPPS Store&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;WANdisco's uberSVN is a freely available, open ALM tool that transforms &lt;a href="http://www.wandisco.com/subversion/download" target="_blank"&gt;Apache Subversion&lt;/a&gt; into a versatile platform designed for social coding. uberApps provides an array of tested and certified developer tools – both free and paid – in one user-friendly location. Here you can quickly download a version of Jenkins that comes pre-configured to work with Subversion and uberSVN (if you want to see a great overview/demo, go &lt;a href="http://www.ubersvn.com/apps/jenkins" target="_blank"&gt;here&lt;/a&gt;). uberSVN also gives you "one throat to choke" for products, services, and support.&lt;br /&gt;&lt;br /&gt;Now, backed by CloudBees expertise, uberSVN users can add advanced Jenkins support to the mix, so they know they have peace of mind when they depend on Jenkins for their crucial development processes. Since 82% of the Jenkins users we recently &lt;a href="http://pages.cloudbees.com/jenkins-survey-2011.html%20" target="_blank"&gt;surveyed&lt;/a&gt; told us they consider Jenkins mission-critical, backing your Jenkins with formal support is a very good thing!&lt;br /&gt;&lt;br /&gt;WANdisco's Jenkins support includes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;24-by-7 worldwide coverage&lt;/li&gt;&lt;li&gt;Online, email and phone support&lt;/li&gt;&lt;li&gt;Named support contacts&lt;/li&gt;&lt;li&gt;Online case tracking&lt;/li&gt;&lt;li&gt;Access to highly experienced Subversion and Jenkins support staff&lt;/li&gt;&lt;li&gt;One-hour response times with a Platinum or Platinum Plus package&lt;/li&gt;&lt;/ul&gt;With our team of world-renowned Jenkins experts, including Jenkins founder &lt;a href="http://www.cloudbees.com/company-team.cb#KohsukeKawaguchi" target="_blank"&gt;Kohsuke Kawaguchi&lt;/a&gt;, CloudBees provides higher-level support for any advanced technical issues that uberSVN/Jenkins users may encounter. &lt;br /&gt;&lt;br /&gt;Not using uberSVN? No worries, you can still get support for Jenkins through a &lt;a href="http://www.cloudbees.com/jenkins-enterprise-by-cloudbees.cb" target="_blank"&gt;Jenkins Enterprise by CloudBees&lt;/a&gt; subscription. &lt;br /&gt;&lt;br /&gt;Want to learn more? &lt;span style="background-color: white;"&gt;Visit the &lt;a href="http://blogs.wandisco.com/2012/01/30/jenkins-professional-support-comes-to-ubersvn/" target="_blank"&gt;WANdisco blog&lt;/a&gt; or view the &lt;a href="http://www.wandisco.com/news/press-releases/wandisco-announces-professional-support-option-for-jenkins" target="_blank"&gt;press release&lt;/a&gt;.&lt;/span&gt;&lt;span style="background-color: white;"&gt; &lt;/span&gt;Also, we'll be announcing a Jenkins Tips training webinar soon, so stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-2416071289942241856?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/2416071289942241856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/jenkins-support-comes-to-wandiscos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2416071289942241856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2416071289942241856'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/jenkins-support-comes-to-wandiscos.html' title='Jenkins Support Comes to WANdisco’s uberSVN Platform'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-u2L8_agP628/TyMKj0ua_pI/AAAAAAAAAW8/uJD3lMfBp8s/s72-c/jenkins-support-animated.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-7909164086061412499</id><published>2012-01-26T08:00:00.007-05:00</published><updated>2012-02-18T17:59:33.352-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='kohsuke'/><title type='text'>Writing Programs that Drive Jenkins</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-Ax9Co-cDdog/Tx7AESytKeI/AAAAAAAAAGE/xMfbi1TqXL8/s1600/Jenkins_Butler.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701205358294149602" src="http://3.bp.blogspot.com/-Ax9Co-cDdog/Tx7AESytKeI/AAAAAAAAAGE/xMfbi1TqXL8/s320/Jenkins_Butler.png" style="cursor: hand; cursor: pointer; float: left; height: 128px; margin: 0 10px 10px 0; width: 114px;" /&gt;&lt;/a&gt;&lt;br /&gt;One of the interesting discussions during &lt;a href="http://jenkins-ci.org/event/jenkins-scale-10x-los-angeles"&gt;SCALE 10x&lt;/a&gt; was about using Jenkins as a piece of a bigger software. This person was interested in using Jenkins to run some business analysis operations, and wanted to have a separate interface for business oriented people. This is actually an emerging but common theme I hear from many users. Another company in San Jose actually built the workflow engine that uses Jenkins as a piece in a bigger application (aside from the actual build and test, this workflow involves reviews, approvals, etc.), and &lt;a href="http://kohsuke.org/2011/12/20/github-releases-janky/"&gt;GitHub Janky&lt;/a&gt; can be classified as one such app, too.&lt;br /&gt;&lt;br /&gt;This is something I always believed in — that every piece of software needs to be usable but a layer above. Or put another way, every software should be usable as a library.&lt;br /&gt;&lt;br /&gt;So in this post I'm going to discuss various ways you can programmatically drive Jenkins.&lt;br /&gt;Let's start with &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API"&gt;the REST API of Jenkins&lt;/a&gt;. For most of the data Jenkins renders as HTML, you can access its XML version and JSON version (as well as a few other formats, like Python literal fragment.) You do this by adding &lt;tt&gt;/api&lt;/tt&gt; to the page (see &lt;a href="http://ci.jenkins-ci.org/api"&gt;http://ci.jenkins-ci.org/api&lt;/a&gt; for example.) Those pages discusss other REST API where applicable. For example, you can POST to a certain URL and it'll create/update job definitions, etc.&lt;br /&gt;&lt;br /&gt;If you are going to use REST API, you might find &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Auto-discovering+Jenkins+on+the+network"&gt;the auto-discovery for Jenkins&lt;/a&gt; useful. You can discover Jenkins on the local subnet via UDP broadcast, or DNS multi-cast. There's also a distinctive HTTP header "Jenkins-Version" on the top page of Jenkins that allows your application to verify that it's talking to a real Jenkins server, as well as &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Instance+Identity"&gt;an instance ID&lt;/a&gt; that allows you to identify Jenkins instanecs. These featuers allow you to build smarter applications.&lt;br /&gt;&lt;br /&gt;For Jenkins protected by some authentication mechanism, you can use the user name + API key in the HTTP basic auth (and I want to add OAuth support here.)&lt;br /&gt;&lt;br /&gt;REST API is great -- its programming language agnostic. It is also convenient that neither the server nor the client has to trust each other. But those APIs are bound by the request/response oriented nature of the HTTP protocol.&lt;br /&gt;&lt;br /&gt;Another great integration point for Jenkins is &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI"&gt;the CLI&lt;/a&gt;. This uses &lt;a href="https://github.com/jenkinsci/remoting/"&gt;the same underlying technology that drives master/slave architecture&lt;/a&gt;, which enables your command line clients to be a lot more intelligent. For example, REST API exposes an URL that you can post to get a build started. But the equivalent command in CLI can have you block until the build is complete (and exit code indicates the status), or run the polling first and proceed to build only when the polling detects a change, or allow you to perform a parameterized build with multiple file uploads very easily. For protected Jenkins, CLI supports &lt;a href="http://blog.cloudbees.com/2011/06/public-key-authentication-in-jenkins.html"&gt;SSH public key authentication&lt;/a&gt; to securely authenticate the client.&lt;br /&gt;&lt;br /&gt;A slightly different version of the CLI is &lt;a href="http://kohsuke.org/2011/12/27/jenkins-now-acts-as-an-ssh-daemon/"&gt;"Jenkins as SSH server"&lt;/a&gt;. Jenkins speaks the server side of the SSH protocol, and allows regular SSH clients to execute a subset of CLI commands. In this way, you don't need a Java runtime installed on the client side to drive Jenkins.&lt;br /&gt;&lt;br /&gt;These two integration APIs are often much easier to script than REST API.&lt;br /&gt;&lt;br /&gt;Those APIs are available for non-privileged users, and they are great for small scale integrations. But for more sophisticated integration needs, we have additional APIs.&lt;br /&gt;&lt;br /&gt;One is the REST API access to &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console"&gt;the Groovy console&lt;/a&gt;, which allows administrator users to run arbitrary Groovy scripts inside the Jenkins master JVM (and you can submit this script as POST payload, and get the response back as the HTTP response). This allows you to tap into all the Jenkins object models. Unlike the REST API, in this way you can ship the computation, so in one round-trip you can do a lot. You can do the same with CLI, which also lets you access stdin/stdout of the CLI.&lt;br /&gt;The other sophisticated integration API I wanted to talk about is the remoting API that does Java RPC (not to be confused with the remote API, which is the synonym for the REST API). The remoting API is the underlying protocol that we use for master/slave communications, and it revolves around the notion of shipping a closure (and code associated with it) from one JVM to another, executing it, and getting the result back. If your application runs elsewhere, you can establish the remoting API channel with Jenkins master, then prepare a &lt;tt&gt;Callable&lt;/tt&gt; object. You can then have Jenkins master execute this closure, and the result is sent back to your JVM.&lt;br /&gt;&lt;br /&gt;There's &lt;a href="https://github.com/jenkinsci/cli-channel-demo"&gt;an example of this available&lt;/a&gt;. You bootstrap this in the same way the CLI client talks to the master, then you "upgrade" the communication channel by activating the remote code download support (which requires the administrator privilege, for obvious reasons).&lt;br /&gt;&lt;br /&gt;The great thing about this is that your data structure is rich Java object model all the way, and you never have to translate your data to externalizable serialization data format like XML or JSON. This greatly simplifies your program.&lt;br /&gt;&lt;br /&gt;I think this list covers all the major integration APIs that Jenkins offers. If you are building any interesting applications that use Jenkins as a building block, please share your experience so that we can make it better!&lt;br /&gt;&lt;br /&gt;Kohsuke Kawaguchi&lt;br /&gt;Jenkins Founder,&lt;br /&gt;Elite Developer &amp;amp; Architect, CloudBees&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-7909164086061412499?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/7909164086061412499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/writing-programs-that-drive-jenkins.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/7909164086061412499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/7909164086061412499'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/writing-programs-that-drive-jenkins.html' title='Writing Programs that Drive Jenkins'/><author><name>Kohsuke Kawaguchi</name><uri>http://www.blogger.com/profile/00023761903151743201</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_rF9tjQUwkVo/TTB4kcw_hzI/AAAAAAAAAdU/h1utHP8odWk/s1600-R/self2.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Ax9Co-cDdog/Tx7AESytKeI/AAAAAAAAAGE/xMfbi1TqXL8/s72-c/Jenkins_Butler.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-1872977335858553576</id><published>2012-01-25T17:17:00.011-05:00</published><updated>2012-01-25T20:22:42.220-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='EnterpriseDB'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres plus'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><title type='text'>Postgres in the Cloud Goodness with CloudBees</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-qWphYtXsgtw/TyCqe-gvZqI/AAAAAAAAAGQ/sI2AvxbwO1M/s1600/Bee%2526Elephant.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 291px; height: 320px;" src="http://1.bp.blogspot.com/-qWphYtXsgtw/TyCqe-gvZqI/AAAAAAAAAGQ/sI2AvxbwO1M/s320/Bee%2526Elephant.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5701744577404167842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Today, EnterpriseDB &lt;a href="http://www.marketwatch.com/story/enterprisedb-announces-availability-of-postgres-plus-cloud-database-2012-01-25" target="_blank"&gt;announced&lt;/a&gt; the availability of Postgres Plus Cloud Database. Some of the advantages of this DBaaS (Database as a Service) are point-and-click provisioning, online backups, automatic scaling and failover.&lt;br /&gt;&lt;br /&gt;Developers who prefer Postgres can now use this service with the CloudBees Platform as a Service (PaaS) to build database-backed applications.&lt;br /&gt;&lt;br /&gt;Configuring web applications (on CloudBees) to talk to the database requires minimal configuration changes. Developers end up just changing their datasource configuration settings.&lt;br /&gt;&lt;br /&gt;I'd recommend that developers change an existing application to play with this database. The delta upload feature in CloudBees (where only touched changes are uploaded during redeploys) makes this process fairly painless (dare I say enjoyable :-)).&lt;br /&gt;&lt;br /&gt;A detailed article that builds a web application from scratch, configures Maven to pull in the right Postgres libraries and uses JPA and JDBC is available &lt;a href="http://wiki.cloudbees.com/bin/view/RUN/Postgres" target="_blank"&gt;here&lt;/a&gt;. The source code of the application is available on &lt;a href="https://github.com/harpreetsingh/PostgresqlInCloudWithCloudBees" target="_blank"&gt;github&lt;/a&gt;. Feel free to use the code to get started quickly.&lt;br /&gt;&lt;br /&gt;- Harpreet Singh, CloudBees&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-1872977335858553576?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/1872977335858553576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/postgres-in-cloud-goodness-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1872977335858553576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/1872977335858553576'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/postgres-in-cloud-goodness-with.html' title='Postgres in the Cloud Goodness with CloudBees'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/10313760024435066872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-qWphYtXsgtw/TyCqe-gvZqI/AAAAAAAAAGQ/sI2AvxbwO1M/s72-c/Bee%2526Elephant.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-7763514180423842887</id><published>2012-01-24T17:42:00.007-05:00</published><updated>2012-01-25T11:40:36.034-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Painless Maven Builds with Jenkins</title><content type='html'>&lt;h3&gt;Overview&lt;/h3&gt;&lt;a href="http://3.bp.blogspot.com/-K9K_XRIF5Uw/Tx8htopf6yI/AAAAAAAAAD8/IqqH_uk5GCo/s1600/Maven_logo.gif"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701312721163643682" src="http://3.bp.blogspot.com/-K9K_XRIF5Uw/Tx8htopf6yI/AAAAAAAAAD8/IqqH_uk5GCo/s320/Maven_logo.gif" style="cursor: hand; cursor: pointer; float: right; height: 74px; margin: 0 0 10px 10px; width: 320px;" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-zDu6GBYRAtI/Tx8dWku6-_I/AAAAAAAAAC0/IsCe5sE1ttk/s1600/Selection_013.png"&gt;&lt;/a&gt;One of the great things about &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; is that it provides a standard project and build layout, along with a standard set of "goals." Not only does this make it easier for developers to get up to speed on a new project, but it also allows Jenkins to provide special support for Maven projects, reducing the configuration needed while enhancing the build report automatically. That is the goal of the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Building+a+maven2+project"&gt;Maven plugin for Jenkins&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The central feature of the Maven plugin for Jenkins is the Maven 2/3 project type. Thanks to the &lt;a href="http://maven.apache.org/pom.html"&gt;Maven project object model&lt;/a&gt; (POM), this project type can &lt;b&gt;automatically&lt;/b&gt; provide the following features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Archive artifacts produced by a build&lt;/li&gt;&lt;li&gt;Publish test results&lt;/li&gt;&lt;li&gt;Trigger jobs for projects which are downstream dependencies&lt;/li&gt;&lt;li&gt;Deploy your artifacts to a Maven repository&lt;/li&gt;&lt;li&gt;Breakout test results by module&lt;/li&gt;&lt;li&gt;Optionally rebuild only changed modules, speeding your builds&lt;/li&gt;&lt;/ul&gt;All of the above can be accomplished in Free style builds, but this requires more configuration on your part.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;Requirements for Plugin Use&lt;/h3&gt;All Jenkins releases have the Maven plugin included. You must also have at least one Maven installation.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;How to Use It&lt;/h3&gt;First, you must configure a Maven installation (this step can be skipped if you are using DEV@cloud). This can be done by going to the system configuration screen (Manage Jenkins-&amp;gt; Configure System). In the "Maven Installations" section, 1) click the Add button, 2) give it a name such as "Maven 3.0.3" and then 3) choose the version from the drop down.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-O580R-efGz8/Tx8nUrXLr3I/AAAAAAAAAEI/IxOQgxw9R8c/s1600/Selection_022.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701318889465163634" src="http://3.bp.blogspot.com/-O580R-efGz8/Tx8nUrXLr3I/AAAAAAAAAEI/IxOQgxw9R8c/s400/Selection_022.png" style="cursor: pointer; display: block; height: 135px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, Jenkins will automatically install this version any time it's needed (on any new build machines, for example) by downloading it from Apache and unzipping it.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next, create a new Maven job by 1) clicking "New Job" on the left hand menu, 2) give it a name, and 3) choose the "Build a Maven 2/3 project".&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701307926929144818" src="http://2.bp.blogspot.com/-zDu6GBYRAtI/Tx8dWku6-_I/AAAAAAAAAC0/IsCe5sE1ttk/s400/Selection_013.png" style="color: #0000ee; cursor: pointer; display: block; height: 146px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; text-decoration: underline; width: 400px;" /&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;You will then be presented with the job configuration screen. On this page, you need to provide 1) the SCM and 2) the Maven goals to call. That's it! Choose the SCM you want to use (we'll use Git), and then specify what Maven targets to call. We'll call the "clean site install" goals so we can see the full effect.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-R8hx04TNkbs/Tx8efFMPDkI/AAAAAAAAADM/U1jRQSTXgDY/s1600/Selection_015.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701309172592610882" src="http://1.bp.blogspot.com/-R8hx04TNkbs/Tx8efFMPDkI/AAAAAAAAADM/U1jRQSTXgDY/s400/Selection_015.png" style="cursor: pointer; display: block; height: 169px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;...&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-yxTQoPpTGpg/Tx8fDgl3tyI/AAAAAAAAADY/KGTnV1qwqqM/s1600/Selection_019.png" style="text-align: left;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701309798423181090" src="http://3.bp.blogspot.com/-yxTQoPpTGpg/Tx8fDgl3tyI/AAAAAAAAADY/KGTnV1qwqqM/s400/Selection_019.png" style="cursor: pointer; display: block; height: 72px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Now, just click build now, and click on the progress bar in the left hand "Build Executor Status" to watch Jenkins install Maven, checkout your project, and build it using Maven. The build output should look something like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-PSHTSn-qeGU/Tx8fzVUOJ0I/AAAAAAAAADk/I2hQ9iMB07U/s1600/Selection_020.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701310620030084930" src="http://1.bp.blogspot.com/-PSHTSn-qeGU/Tx8fzVUOJ0I/AAAAAAAAADk/I2hQ9iMB07U/s320/Selection_020.png" style="cursor: pointer; display: block; height: 320px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 313px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;Now that the project is built, we can navigate to the detail page for our Maven module (project page -&amp;gt; Modules link on the left). For each module, Jenkins displays:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-NrozYDqc5aQ/Tx8gc4mjwzI/AAAAAAAAADw/I2FrvLcKEcY/s1600/Selection_021.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5701311333876876082" src="http://4.bp.blogspot.com/-NrozYDqc5aQ/Tx8gc4mjwzI/AAAAAAAAADw/I2FrvLcKEcY/s320/Selection_021.png" style="cursor: pointer; float: right; height: 138px; margin-bottom: 10px; margin-left: 10px; margin-right: 0px; margin-top: 0px; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;A link to the module's workspace&lt;/li&gt;&lt;li&gt;The module's artifacts&lt;/li&gt;&lt;li&gt;A clickable test result trend&lt;/li&gt;&lt;li&gt;Recent changes (just for that module!)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What's unique about the Maven job type is that these links and reports are &lt;b&gt;automatically&lt;/b&gt; broken down by module for you. You can even customize notifications for this module by clicking the "Configure" link on the left.&lt;/div&gt;&lt;br /&gt;Finally, if we had configured Jenkins to build any downstream dependencies of this project, they would automatically start building after this build completed.&lt;br /&gt;&lt;span class="Apple-style-span" style=" font-weight: bold; font-size:19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size:130%;"&gt;Tips&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When running multiple builds simultaneously on the same slave, they will share the same local Maven repository. This can cause problems if two builds are trying to update the same artifact simultaneously, since local Maven repositories are not designed for concurrent access. One long-standing solution to this is to use the "Use private Maven repository" option in the "Advanced" section of the Maven build. This will create an isolated local Maven repository for the job (in $WORKSPACE/.repository) which prevents these problems.  Jenkins releases since 1.448 let you specify a Maven repository per executor, which is a more efficient way to solve the same problem.&lt;br /&gt;&lt;br /&gt;If you are using the Maven plugin, you should also investigate the &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/M2+Release+Plugin"&gt;M2 Release Plugin&lt;/a&gt; for automating releases with one click. The &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/M2+Extra+Steps+Plugin"&gt;M2 Extra Steps plugin&lt;/a&gt; will let you run arbitrary build steps before and after your build. Finally, the new &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Config+File+Provider+Plugin"&gt;Config File Provider&lt;/a&gt; plugin lets you maintain different settings.xml which can be referenced by your Maven builds.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;h3&gt;Relevant Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://maven.apache.org/"&gt;Maven website&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Building+a+maven2+project"&gt;Maven plugin wiki page&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Maven is a trademark of the Apache Software Foundation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ryan Campbell&lt;/div&gt;&lt;div&gt;Developer&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;CloudBees&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-7763514180423842887?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/7763514180423842887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/painless-maven-builds-with-jenkins.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/7763514180423842887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/7763514180423842887'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/painless-maven-builds-with-jenkins.html' title='Painless Maven Builds with Jenkins'/><author><name>Ryan Campbell</name><uri>http://www.blogger.com/profile/08081006040686169764</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-K9K_XRIF5Uw/Tx8htopf6yI/AAAAAAAAAD8/IqqH_uk5GCo/s72-c/Maven_logo.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-2603101406865753736</id><published>2012-01-24T01:47:00.014-05:00</published><updated>2012-02-11T16:16:07.368-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='AWS'/><title type='text'>Securing the Cloud: Part 2 - Managing Security Around Remote Login and Development</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-pIeVGc8y-ac/Tx6jqow7PlI/AAAAAAAAAF4/y3sx5d1eZi4/s1600/security3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 215px; height: 234px;" src="http://2.bp.blogspot.com/-pIeVGc8y-ac/Tx6jqow7PlI/AAAAAAAAAF4/y3sx5d1eZi4/s320/security3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5701174131190087250" /&gt;&lt;/a&gt;&lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt;In &lt;i&gt;&lt;a href="http://blog.cloudbees.com/2012/01/securing-cloud-part-1.html"&gt;Securing the Cloud: Part 1&lt;/a&gt;, &lt;/i&gt;we looked at the ways in which developers at CloudBees manage credentials. In today's post, we'll look at how we manage security around remote login and remote development. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt;Like the previous post, because a large portion of our infrastructure is in the Amazon Web Services environment (AWS), this post will specifically focus on that platform.&lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=" ;font-family:Arial;color:#1A1A1A;"&gt;Remote Server Login&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt;One major advantage in using the CloudBees Platform as a Service (PaaS) is that you do not have to manage servers anymore. Using our platform, developers develop, deploy and scale applications with minimal server interaction.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt;However, behind the scenes, CloudBees engineers do need to manage server lifecycle. Not only for instances that run customer code, but for web proxying layers, databases, Git/SVN repos, and many other administrative things. In the previous post, we discussed the credentials that allow developers to see, and perhaps manage, the lifecycle of these servers. However, we also need to manage the ability to remotely login to these machines to perform maintenance or fix problems that may occur. In addition, we need to limit traffic from the outside world in a way that allows applications to work, but does not allow malicious attempts to break into the systems.&lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=" ;font-family:Arial;color:#1A1A1A;"&gt;Locked Down Access&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt;Our first strategy is to make prodigious use of EC2 security groups and rules. Each of our instances has a particular role it serves, and as such is tied to a specific security group that reflects that type of role. Our application servers, our proxying layer and our databases each have separate EC2 security groups attached to them. On the DEV@cloud side, our Jenkins master instances, the executor machines and the proxying layer also have their own EC2 security groups.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span style=" ;font-family:Arial;font-size:100%;color:#1A1A1A;"&gt;It is within these security groups that we can restrict outside traffic to only the ports needed, and then also limit inside traffic between the EC2 security groups where things need to "talk" internally. For example, our web proxying layer allows outside traffic from ports 80 and 443 - and that's it. Our application servers don't allow outside traffic at all, and only allow connections to specific ports coming from the web proxying layer. This tiered and locked down approach ensures we don't succumb to attackers looking for a backdoor into our environment.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=" ;font-family:Arial;color:#1A1A1A;"&gt;Backdoors&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt;Of course, we still DO need backdoors into the systems in order for our own team to get in and perform administrative tasks. Most commonly this includes remote login (SSH) to a server, but also includes access to backend web interfaces to monitor application health or observe application metrics in order to solve issues.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span style=" ;font-family:Arial;color:#1A1A1A;"&gt;To ensure we maintain as much security around these backdoors as possible, we hide them all behind a Virtual Private Network (VPN) that is accessible only to CloudBees developers. We use openvpn, which is a userspace-based SSL VPN that tunnels traffic over UDP. Each developer who has the need for access is given a private key to access the VPN. Once established on the VPN, the developer now has access to the ports needed to get into the system.&lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span style=" ;font-family:Arial;font-size:100%;color:#1A1A1A;"&gt;Note that doesn't mean they automatically have access INTO the systems, it just means they have access to the mechanisms to get into the systems. Case in point: once on the VPN, developers have access into port 22 (SSH) on our various machines. However, this still doesn't mean they have the access keys to actually login to those various systems - this is a separate credentialing and distribution mechanism that is handled on an as-needed basis.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span style=" ;font-family:Arial;font-size:100%;color:#1A1A1A;"&gt;This two layer approach gives us a high level of security, while still maintaining usability for our development team.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=" ;font-family:Arial;color:#1A1A1A;"&gt;Handling Problems&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="color: rgb(26, 26, 26);   font-family:Arial;"&gt;While it provides security, the VPN system can still be a source of friction. Maintenance, or an unplanned outage on the VPN system itself, can halt developer progress across the entire system. In a way, the VPN becomes a single point of failure for our team to be able to handle system level issues, should they occur.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;To handle this, we allow our administrators to make temporary rule changes to the EC2 security groups. This facilitates work on system issues if the VPN system, itself, becomes a bottleneck to progress. As an example, they can open SSH access to a specific external IP address a developer may be using in order to let them login while bypassing the VPN. This change can only be facilitated by an administrator.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;In addition, our security group rules are monitored by an external script on a nightly basis. A script matches the state of the security group rules with a known state stored in a Git repository; any deviations are noted and an email is generated. This allows all administrators to keep tabs on rule changes and ensure "temporary" changes get reverted, or made permanent by adding them to the Git repository of "good" rules.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;We feel that our VPN approach, coupled with continuous auditing of security group rules against a known standard, provides us with a very high level of overall security around external facing access into our critical infrastructure. This, in turn, provides our customers with the highest levels of security against intrusion and potential data theft.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;In my third and final post on the topic of security, we'll look at how we manage credential access to external services that developers may need to use.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;Caleb Tennis, Elite Developer&lt;br /&gt;CloudBees&lt;br /&gt;www.cloudbees.com&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: PTSansRegular, 'Lucida Grande', arial, helvetica, sans-serif; font-size: 14px; line-height: 19px; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="post-body entry-content" style="width: 640px; line-height: 1.4; position: relative; "&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="color: rgb(26, 26, 26); font-family: Arial; font-size: 14px; "&gt;Read Parts 1 and 3 in Caleb's&lt;i&gt; Securing the Cloud&lt;/i&gt; blog series:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 2.5em; padding-bottom: 0px; padding-left: 2.5em; margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.4; "&gt;&lt;li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0.25em; margin-left: 0px; text-indent: 0px; "&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="color: rgb(26, 26, 26); font-family: arial; font-size: 14px; "&gt;&lt;span class="Apple-style-span"  style="color:#e15200;"&gt;&lt;a href="http://blog.cloudbees.com/2012/01/securing-cloud-part-1.html"&gt;Securing the Cloud: Part 1 - Managing Security Around Remote Login and Development&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0.25em; margin-left: 0px; text-indent: 0px; "&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26);   font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="text-decoration: none; color: rgb(225, 82, 0); font-family: arial; font-size: 14px; "&gt;&lt;a href="http://blog.cloudbees.com/2012/02/securing-cloud-part-3-credentials-and.html"&gt;Securing the Cloud: Part 3 - Credentials and Password Policies&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="clear: both; "&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-footer" style="line-height: 1.6; margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-2603101406865753736?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/2603101406865753736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/securing-cloud-part-2-managing-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2603101406865753736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2603101406865753736'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/securing-cloud-part-2-managing-security.html' title='Securing the Cloud: Part 2 - Managing Security Around Remote Login and Development'/><author><name>Heidi Gilmore</name><uri>http://www.blogger.com/profile/08832406512250828531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-pIeVGc8y-ac/Tx6jqow7PlI/AAAAAAAAAF4/y3sx5d1eZi4/s72-c/security3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-6525017458086367528</id><published>2012-01-16T20:23:00.010-05:00</published><updated>2012-02-11T16:13:44.983-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='EC2'/><title type='text'>Securing the Cloud: Part 1 - Managing Credentials</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-Fz5US2np81E/TxTPf5BWMCI/AAAAAAAAAFY/MWFF8BkQm5o/s1600/fingerprint-scan.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://4.bp.blogspot.com/-Fz5US2np81E/TxTPf5BWMCI/AAAAAAAAAFY/MWFF8BkQm5o/s320/fingerprint-scan.jpg" alt="" id="BLOGGER_PHOTO_ID_5698407575319883810" border="0" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse; color: rgb(34, 34, 34);   font-family:arial, sans-serif;font-size:100%;"&gt;In the cloud world, companies must be vigilant to the types of risk that exist when placing their code and infrastructure into the hands of others. Anytime you place your business data in the hands of a third party, there's risk. While providers like Amazon, Rackspace or VMware have a certain amount of credibility behind their names - inherently, there's still some sort of risk involved. This is especially true with cloud providers, where the implementation and security behind the scenes is usually not visible to the end customer. You have to trust the vendor.&lt;br /&gt;&lt;br /&gt;At CloudBees, we have a number of security measures in place to help safeguard your applications and code against external threats. Some of these are practices we've honed over the past few years, others are best practices that everyone should be doing. In this post, I'll share a few of the things we're doing to help safeguard our customers.&lt;br /&gt;&lt;br /&gt;While we have equipment in multiple data centers worldwide, a good portion of our Platform as a Service (PaaS) cloud environment runs on Amazon Web Services (AWS) so this will be the focus of my article.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AWS Credential Management&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Our service offerings have been developed over the past few years and, like many others who have spent a few years in Amazon's cloud, the evolution of credential management has improved. Originally, Amazon offered one set of credentials that were universal across your AWS account. To tackle security, a lot of people (CloudBees included) had multiple Amazon accounts for a layer of separation between services and access needs. In 2010, Amazon released a more fine-grained credential and access management system called AWS Identity and Access Management (IAM).&lt;br /&gt;&lt;br /&gt;We have spent a significant amount of time revising our access management system to take advantage of this system. As noted, previously there was one centralized set of credentials for a specific AWS account. This meant that every developer who needed access had to be given these credentials. In addition, all of our services that utilized the EC2 API also had to have these credentials distributed to the instances they ran on.&lt;br /&gt;&lt;br /&gt;I don't think I need to explain why having a single key to the kingdom is not the greatest. For starters, if a developer left the company this would necessitate a forced change of all of the credentials out there. This means that every developer would need to be given a new set of credentials, and every application would need to be updated to have the new set of credentials in place. While we make use of automation, this is certainly not a desired scenario.&lt;br /&gt;&lt;br /&gt;When the company first started, the number of developers was small, and everyone did everything. However, as more people joined the team and had different access needs, it became not only a security threat, but also just a development threat for everyone to have full access to all systems.&lt;br /&gt;&lt;br /&gt;Over the past few months, we've done an extensive audit and redeployment using both developer and service specific credentials throughout our system. Not only can we have specific credentials now for each developer and each service, but we can also lock those credentials down to minimize security risks.&lt;br /&gt;&lt;br /&gt;One such example is our DNA service. This is an internal facing service that we use to monitor and manage instance and service health. The DNA application needs the ability to access instance lists, start and stop instances, and update IP address information, amongst other things. Not only does DNA now have its own credentials that are specific to its service, but those credentials are locked to a single fixed IP address. AWS will not accept commands using those credentials unless they originate from that single IP address. Now we worry much less about those credentials being used maliciously.&lt;br /&gt;&lt;br /&gt;With developer-specific credentials, comes the ability to much more easily rotate and disable access as needed. Now we can easily/quickly remove access for a specific set of developer credentials, without impacting other services or developers in the process. As well, we can limit developer access to the pieces of infrastructure they need in order to do their work. Our major concern isn't a rogue developer causing issues, it's much more concerning if someone's laptop gets stolen, or someone at a coffee shop oversees login credentials on the screen. Restricted access also limits what a developer can do accidentally, if they target the wrong thing or try something when they don't completely understand the potential outcome.&lt;br /&gt;&lt;br /&gt;Rolling out new credentials to all developers and services is not easy. This process has required considerable planning and execution, and you have to be ready for some of the potential downfalls. For one, when people have restricted access to the system, they now are not able to react to major system issues that may creep up. When service access becomes limited, it can cause future potential issues. For example, if new features are added that make use of restricted API calls - nobody may remember they are restricted and a significant amount of debugging time may be spent trying to figure out why things don't work.&lt;br /&gt;&lt;br /&gt;You must also think through scenarios when developers still have access to change other developers or services permissions. For example, locking down our DNA service to a specific IP address increases security, but if any developer can go in later and change that lockdown, it may not be obvious that change ever happened. During some of our initial audits, we found a lot of security-related changes that were done ad hoc to quickly get something that had been broken working again, but then the security change was never later reversed.&lt;br /&gt;&lt;br /&gt;As a result, part of our policy now is to disallow developers or services from making Identity Access Management (IAM) changes. Those changes are handled by a group of three administrators, and via an administrative account only. This account is the only one able to make IAM changes (controlling access to this account will be discussed in another blog post).&lt;br /&gt;&lt;br /&gt;By distributing credentials in this manner, we feel we have much better protection of our infrastructure in the cloud which, in turn, allows us to keep our customers data more secure.&lt;br /&gt;&lt;br /&gt;Stay tuned for Part 2, where I will discuss how we manage remote access and network traffic security.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse; color: rgb(34, 34, 34);   font-family:arial, sans-serif;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse; color: rgb(34, 34, 34);   font-family:arial, sans-serif;font-size:100%;"&gt;Caleb Tennis, Elite Developer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse; color: rgb(34, 34, 34);   font-family:arial, sans-serif;font-size:100%;"&gt;CloudBees&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse; color: rgb(34, 34, 34);   font-family:arial, sans-serif;font-size:100%;"&gt;&lt;a href="http://www.cloudbees.com/"&gt;www.cloudbees.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"   style="color: rgb(26, 26, 26); font-family:Arial;font-size:100%;"&gt;Read Parts 2 and 3 in Caleb's&lt;i&gt; Securing the Cloud&lt;/i&gt; blog series:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(26, 26, 26); font-family:arial;font-size:100%;"  &gt;&lt;a href="http://blog.cloudbees.com/2012/01/securing-cloud-part-2-managing-security.html"&gt;Securing the Cloud: Part 2 - Managing Security Around Remote Login and Development&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.cloudbees.com/2012/02/securing-cloud-part-3-credentials-and.html"&gt;&lt;span class="Apple-style-span"   style="font-family:arial;font-size:100%;"&gt;Securing the Cloud: Part 3 - Credentials and Password Policies&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-6525017458086367528?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/6525017458086367528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/securing-cloud-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/6525017458086367528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/6525017458086367528'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/securing-cloud-part-1.html' title='Securing the Cloud: Part 1 - Managing Credentials'/><author><name>Heidi Gilmore</name><uri>http://www.blogger.com/profile/08832406512250828531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Fz5US2np81E/TxTPf5BWMCI/AAAAAAAAAFY/MWFF8BkQm5o/s72-c/fingerprint-scan.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-6934967364363619192</id><published>2012-01-16T19:49:00.002-05:00</published><updated>2012-01-20T11:12:11.126-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='Kohsuke kawaguchi'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='newsletter'/><category scheme='http://www.blogger.com/atom/ns#' term='juc'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>A Big Welcome to "Continuous Information" – The CloudBees Newsletter for Jenkins</title><content type='html'>&lt;i&gt;A Welcome from Jenkins Founder Kohsuke Kawaguchi&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;One of the take-aways for me from October's &lt;a href="http://www.cloudbees.com/jenkins-user-conference-2011.cb" target="_blank"&gt;Jenkins User Conference (JUC)&lt;/a&gt; is that people do want to hear us talk about Jenkins -- not just about the user-level features but sometimes about gory inner details and what's being cooked.&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fwnUHcYc8KQ/TxTDgQs_jRI/AAAAAAAAAWk/9oI_5Ld2hrw/s1600/kkawaguchi-large.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-fwnUHcYc8KQ/TxTDgQs_jRI/AAAAAAAAAWk/9oI_5Ld2hrw/s200/kkawaguchi-large.jpg" width="183" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;Kohsuke&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So I'm naturally very excited about the launch of a Jenkins newsletter. It will hopefully be a means for us to give you an overview of what's going on in the noisy bazaar that is the Jenkins project, for those who are too busy to go through all the e-mails, all the new plugins, and IRC conversations that are occurring every day.&lt;br /&gt;&lt;br /&gt;Now, pulling this info together is hard work and takes considerable effort, so I wanted to thank the editors who are stepping up to take this on, and I hope some of you will consider participating in the effort by submitting articles, suggesting what you want to hear, and so on. I'm really hoping that this will be a useful community resource.&lt;br /&gt;&lt;br /&gt;This is the inaugural newsletter! &lt;b&gt;&lt;a href="http://www.cloudbees.com/jenkins-newsletter.cb" target="_blank"&gt;Sign up to receive future newsletters&lt;/a&gt;&lt;/b&gt; directly or view this issue in full…&lt;br /&gt;&lt;br /&gt;-- Kohsuke Kawaguchi, Jenkins &amp;amp; Hudson Project Founder,&lt;br /&gt;and Elite Architect at CloudBees&lt;br /&gt;&lt;br /&gt;PS -- &lt;a href="http://www.cloudbees.com/jenkins-community-newsletter-juc-presentations.cb" target="_blank"&gt;Watch Kohsuke’s Keynote at the JUC&lt;/a&gt; to get the latest status of the Jenkins project. In fact, all of the JUC presentations are available here. We've also just published a &lt;a href="https://www.cloudbees.com/jenkins-user-conference-2011-session-abstracts.cb"&gt;JUC highlights video&lt;/a&gt; - see who came, who spoke...who had the best shoes and what the most coveted JUC swag was!&lt;br /&gt;&lt;br /&gt;PPS -- &lt;a href="http://www.cloudbees.com/forms/jenkins-user-conference-call-papers.cb" target="_blank"&gt;Call for Papers for JUC 2012&lt;/a&gt; is out! Please help us spread the word...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-6934967364363619192?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/6934967364363619192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/big-welcome-to-continuous-information.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/6934967364363619192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/6934967364363619192'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/big-welcome-to-continuous-information.html' title='A Big Welcome to &quot;Continuous Information&quot; – The CloudBees Newsletter for Jenkins'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-fwnUHcYc8KQ/TxTDgQs_jRI/AAAAAAAAAWk/9oI_5Ld2hrw/s72-c/kkawaguchi-large.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-6574355941720844313</id><published>2012-01-16T11:53:00.002-05:00</published><updated>2012-01-17T13:45:12.969-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='market'/><category scheme='http://www.blogger.com/atom/ns#' term='infrastructure'/><category scheme='http://www.blogger.com/atom/ns#' term='Sacha'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Amazon 1 - Microsoft 0</title><content type='html'>&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yXGuBD3k3G8/TxRUi4uU9wI/AAAAAAAAAB4/J-HlFMQGwsw/s1600/roadblocks.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-yXGuBD3k3G8/TxRUi4uU9wI/AAAAAAAAAB4/J-HlFMQGwsw/s200/roadblocks.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The cloud is redefining the IT industry as we’ve known it. Amazon’s recent announcement to provide free Windows micro-instances on EC2 is another event that underscores this revolution occurring from the move to the cloud and how even a giant like Microsoft has probably been forced in such a move.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="-webkit-text-decorations-in-effect: none; color:black;"&gt;However, I see several roadblocks to truly leveraging “free” on EC2 with the Windows platform. &lt;/span&gt;Let’s explore this further…&lt;br /&gt;&lt;br /&gt;For as long as IaaS providers have existed, using a Windows machine has always been more expensive than using a Linux machine. As an illustration, you can see below the current prices for Amazon Web Services and Rackspace, two leading IaaS providers.&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.rackspace.com/cloud/cloud_hosting_products/servers/pricing/" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5698248110753910034" src="http://1.bp.blogspot.com/-3ujWFloMv3g/TxQ-d1OHDRI/AAAAAAAAAE0/BigD0ViHmGw/s1600/2012_0116_AMS-1.png" style="float: left; margin-bottom: 10px; margin-left: 0px; margin-right: 10px; margin-top: 0px;" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Rackspace Pricing&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://aws.amazon.com/ec2/#pricing" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5698248441476448834" src="http://3.bp.blogspot.com/-1j2Ggvv8hd4/TxQ-xFQggkI/AAAAAAAAAFA/jKS5tK-zPvo/s1600/2012_0116_AMS-2.png" style="float: left; margin-bottom: 10px; margin-left: 0px; margin-right: 10px; margin-top: 0px;" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Amazon EC2 pricing&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; text-align: justify;"&gt;&lt;div style="color: red;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Using Microsoft Windows is about 33% to 40% more expensive than running Linux in the cloud (from just a per-hour pricing). Note that at that price point, in both cases you are not going to get support from any vendor (you would have to either get support from Microsoft for Windows or pay for a Linux subscription from Red Hat or another provider). This leads to several observations.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;First, this demonstrates that current software licensed-based business models are ill-suited for the cloud. In order to be competitive, cloud providers are looking for ways to scale their business at the lowest possible cost, which, most of the time, means they’ll always prefer relying on Open Source software if it is feature-competitive with its proprietary counterparts. At the infrastructure layer, this is almost always true: virtualization, routing, firewall, load-balancing, storage, DNS, SSL, etc. are king in Open Source land. This makes it very hard for vendors like Microsoft and even VMware to remain competitive when up against cloud-providers’ offerings aimed at &lt;i&gt;commoditizing&lt;/i&gt; the market. Consequently, &lt;o:p&gt;&lt;/o:p&gt;in the new cloud era, especially at the infrastructure layer, either you are able to provide a full-fledge SERVICE offering (that is the “S” in “&lt;i&gt;X&lt;/i&gt;aaS”) that can be packaged in a way that makes sense to your market, or times will be hard, very hard.&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;While this post focuses on Microsoft, it doesn't mean that things will necessarily be rosier for Open Source vendors down the road. Let's open a quick parenthesis on this aspect. Once a cloud provider has decided to move with Open Source software, the next question is whether they need to rely on a third-party company to get support for that open source components they are using? While they might need help initially, providers will typically have grown the required expertise in-house as they expand, with no need for a high-friction process involving a third-party vendor. Furthermore, since their infrastructure is very homogeneous (hundreds of thousands of identical servers!), they can support their open source software at a much lower price point than any generic subscription provider ever could: they do not have to run gazillions of tests on gazillions of different motherboards, chipset, LAN cards, controllers, disks, CPU, etc. Their domain problem isn’t a problem – as their infrastructure is hyper-focused. This point is illustrated by the recent launch of Amazon’s own Linux distribution, based on RHEL/CentOS: &lt;a href="http://aws.amazon.com/amazon-linux-ami/"&gt;Amazon Linux&lt;/a&gt;. Not only is support for that version of Linux provided as part of the default IaaS support cost (and as we know, FREE is a tough price point to beat), but it probably saves costs to Amazon since those customers are using a stack that Amazon understands extremely well, hence reducing the probability of hard-to-diagnose support tickets.&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;The bottom line is that &lt;b&gt;any infrastructure subscription/license business, open source or proprietary, is a hard business in the cloud era&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;But let’s go back to our point with regard to Microsoft Windows. So, Windows is not only up to 40% more expensive to run in the cloud, but the tools available to build a Windows AMI (vs. a Linux AMI), customize it, provision it, build a JEOS (Just Enough OS) are much weaker on Windows than on Linux. Anybody who has tried to properly automate the usage of Windows and Linux in the cloud will tell you that none of this is trivial, and that Windows is particularly hard. Second roadblock to Windows' adoption in the cloud: &lt;b&gt;Windows' cloud DNA is weak, very weak&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Let's pursue on the on-ramping of new cloud users. About a year ago, Amazon launched their “&lt;a href="http://aws.amazon.com/free/"&gt;free usage tier&lt;/a&gt;” offering. The idea was to provide free compute capacity to new subscribers so they could experience and learn the cloud at no cost. Yet, because this was a free offering, it was only made available for Linux-based AMIs. This meant that for about a year, tens of thousands of developers, DevOps, sys admins, etc. have learned how to use the cloud on Linux, not on Windows. Third roadblock: &lt;b&gt;Windows is not a good candidate for on-ramping new users to the cloud, both for technical and pricing reasons&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Microsoft has probably tried to ignore this for while but this wasn't sustainable: Amazon announced today that Windows is now also eligible on these free tier instances. For this to happen, MSFT probably had to provide free pass-through licenses to Amazon for that very purpose and maybe even more as this is really a way for Microsoft to tap into AWS's on-ramping funnel. As we all well know, whenever we read “Microsoft Windows” and “free” in the same sentence, we know &lt;a href="http://www.microsoft.com/presspass/exec/steve/2006/11-02novellinterop.mspx"&gt;that something big had to force that situation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One last roadblock? Well, now you can &lt;i style="mso-bidi-font-style: normal;"&gt;try&lt;/i&gt; to do something meaningful on Windows with 613MB of RAM, which is what AWS’ free micro instances provide...&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;The cloud is redefining the IT industry as we’ve known it and re-shuffling power among vendors. This is an opportunity for new entrants such as CloudBees to make a difference as well as for dominant positions to shift base. My humble opinion? &lt;b&gt;Amazon will become the new Microsoft and today’s news might be one of the first symbolic events that signal that shift. It will be very hard for Microsoft to turn their ship in a new direction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt;&lt;b&gt; &lt;/b&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Oh, and remember, you can test whatever the cloud revolution means to you, as a Java Developer, on the CloudBees PaaS. &lt;a href="https://grandcentral.cloudbees.com/account/signup"&gt;Just try us for free!&lt;/a&gt; ;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Onward,&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sacha&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-6574355941720844313?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/6574355941720844313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/amazon-1-microsoft-0.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/6574355941720844313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/6574355941720844313'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/amazon-1-microsoft-0.html' title='Amazon 1 - Microsoft 0'/><author><name>Heidi Gilmore</name><uri>http://www.blogger.com/profile/08832406512250828531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-yXGuBD3k3G8/TxRUi4uU9wI/AAAAAAAAAB4/J-HlFMQGwsw/s72-c/roadblocks.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-3854835797494715822</id><published>2012-01-11T12:19:00.002-05:00</published><updated>2012-01-26T11:36:56.718-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GitHub'/><category scheme='http://www.blogger.com/atom/ns#' term='cloudbees'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='DEV at cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Better Integration Between Jenkins and GitHub (with the GitHub Jenkins Plugin)</title><content type='html'>&lt;a href="http://octodex.github.com/images/jenktocat.jpg"&gt;&lt;img alt="" border="0" src="http://octodex.github.com/images/jenktocat.jpg" style="cursor: hand; cursor: pointer; float: right; height: 224px; margin: 0 10px 10px 0; width: 224px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Overview&lt;/h3&gt;Jenkins (and in fact any CI systems) works best when builds are triggered after each and every commit. That provides you, the developer, with the most instant feedback possible. That, in turn, means you get fix(es) to the problems you introduced before you leave the context of what you were working on.&lt;br /&gt;&lt;br /&gt;There are two general techniques for detecting commits in any source control system:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Polling (the "Dad, are we there yet... are we there yet... are we there yet!" technique) where you ask the source control system at regular intervals.&lt;/li&gt;&lt;li&gt;Push, where the source control system tells you there has been a change.&lt;/li&gt;&lt;/ul&gt;The first technique requires no support from the source control system but puts a lot more load on both the CI system and the source control system. As well as that, it can only pick up changes as often as the polling frequency.&lt;br /&gt;&lt;br /&gt;The second technique requires support, in both the source control system and the CI system, for the sending and receiving of notifications.&lt;br /&gt;&lt;br /&gt;The Jenkins GitHub plugin provides support for receiving push notifications from Github post-commit hooks and using those notifications to trigger jobs within Jenkins. It can set-up the post-commit hooks in GitHub for you.&lt;br /&gt;&lt;br /&gt;In addition, GitHub decorates the Jenkins “Changes” pages with links to the pretty GitHub commit, issues pages and adds a sidebar link to the corresponding GitHub project page.&lt;br /&gt;&lt;h3&gt;Stable Release Version&lt;/h3&gt;The current stable release is version 0.9&lt;br /&gt;&lt;h3&gt;Requirement for Plug-in Use&lt;/h3&gt;&lt;div&gt;There are not too many requirements for using this plugin:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Jenkins 1.400 or newer&lt;/li&gt;&lt;li&gt;Jenkins Git Plugin version 1.1.12 or newer&lt;/li&gt;&lt;li&gt;At least one GitHub hosted project to build ;-) &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Step-by-Step Instructions on How to Use it&lt;/h3&gt;&lt;h4&gt;Installation&lt;/h4&gt;&lt;div&gt;&lt;ol&gt;&lt;a href="http://3.bp.blogspot.com/-A5jxC7YqxeY/TwSAbFqlwrI/AAAAAAAAABE/bkEYoA1JtBw/s1600/Screen+shot+2012-01-04+at+16.33.22.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://3.bp.blogspot.com/-A5jxC7YqxeY/TwSAbFqlwrI/AAAAAAAAABE/bkEYoA1JtBw/s200/Screen+shot+2012-01-04+at+16.33.22.png" width="200" /&gt;&lt;/a&gt;&lt;li&gt;Go to your Jenkins instances root page.&lt;/li&gt;&lt;li&gt;If your Jenkins instance has security enabled, login as a user who has the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Overall | Administer&lt;/span&gt; permission.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Manage Jenkins&lt;/span&gt; link on the left-hand side of the screen.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Manage Plugins&lt;/span&gt; link.&lt;/li&gt;&lt;li&gt;On the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Available&lt;/span&gt; tab, select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Github Plugin&lt;/span&gt; and click the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Download and Install&lt;/span&gt; button at the bottom of the page (if you do not got the Git Plugin installed, do not worry, Jenkins is smart enough to install/upgrade the Git plugin, where required).&lt;/li&gt;&lt;li&gt;Restart Jenkins once the plugins are downloaded (Note: users of Jenkins 1.442 or newer should be aware that the plugin currently requires a restart to function correctly).&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;h4&gt;Configuration&lt;/h4&gt;&lt;div&gt;If all you want to do is enable the hyperlinks in the Recent Changes for the build, it is just a case of providing the GitHub project URL in the Jenkins job configuration, e.g.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;a href="http://2.bp.blogspot.com/-X4hnt7YS5CE/TwSE-IIE2uI/AAAAAAAAABQ/uHdqtSK3mxE/s1600/Screen+shot+2012-01-04+at+16.47.28.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://2.bp.blogspot.com/-X4hnt7YS5CE/TwSE-IIE2uI/AAAAAAAAABQ/uHdqtSK3mxE/s200/Screen+shot+2012-01-04+at+16.47.28.png" width="200" /&gt;&lt;/a&gt;&lt;li&gt;Goto your Jenkins instance job.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Configure&lt;/span&gt; link on the left hand side of the screen.&lt;/li&gt;&lt;li&gt;In the GitHub project field, enter the URL of the GitHub project. If your GitHub project's git URL looks like:  &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;git@github.com:username/project.git,&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family:Georgia, serif;"&gt;&lt;br /&gt;then the GitHub project should be:  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New', Courier, monospace;"&gt;http://github.com/username/project/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;or if the project is private, you can get faster navigation with:  &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;https://github.com/username/project/&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;If you want to enable build triggering, you need to configure your Jenkins instance for receiving the push notifications from GitHub. There are two ways you can achieve this. The first way is to let Jenkins manage the Post-Receive URLs for you:&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-eTU1hMbm6Z8/TwSM6Hp3v5I/AAAAAAAAAB0/NxB_LZrJa3I/s1600/Screen+shot+2012-01-04+at+17.05.25.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://3.bp.blogspot.com/-eTU1hMbm6Z8/TwSM6Hp3v5I/AAAAAAAAAB0/NxB_LZrJa3I/s200/Screen+shot+2012-01-04+at+17.05.25.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Go to your Jenkins instances root page.&lt;/li&gt;&lt;li&gt;If your Jenkins instance has security enabled, login as a user who has the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Overall | Administer&lt;/span&gt; permission.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Manage Jenkins&lt;/span&gt; link on the left hand side of the screen.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Configure System&lt;/span&gt; link.&lt;/li&gt;&lt;li&gt;In the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;GitHub Web Hook&lt;/span&gt; section select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Let Jenkins auto-manage hook URLs&lt;/span&gt; option.&lt;/li&gt;&lt;li&gt;Ensure you have provided at least one username and password for connecting to GitHub (the password is required as GitHub does not expose an API for managing the Post-Receive URLs).&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The second way is to manage the Post-Receive URLs yourself:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UEIGAW11vAg/TwSJCJB_cVI/AAAAAAAAABo/nL9nCx8-TsI/s1600/Screen+shot+2012-01-04+at+17.13.18.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://1.bp.blogspot.com/-UEIGAW11vAg/TwSJCJB_cVI/AAAAAAAAABo/nL9nCx8-TsI/s200/Screen+shot+2012-01-04+at+17.13.18.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Go to your Jenkins instances root page.&lt;/li&gt;&lt;li&gt;If your Jenkins instance has security enabled, login as a user who has the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Overall | Administer&lt;/span&gt; permission.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Manage Jenkins&lt;/span&gt; link on the left hand side of the screen.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Configure System&lt;/span&gt; link.&lt;/li&gt;&lt;li&gt;In the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;GitHub Web Hook&lt;/span&gt; section select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Manually manage hook URLs&lt;/span&gt; option.&lt;/li&gt;&lt;li&gt;For each project that you want to have triggering builds, you need to open the Repository Administration screen on that GitHub project's page.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Service Hooks&lt;/span&gt; tab.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Post-Receive URLs&lt;/span&gt; hook.&lt;/li&gt;&lt;li&gt;Add the URL, which will be the root URL of your Jenkins instance with &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;/github-webhook&lt;/span&gt; appended.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-ZReKqXPvlfw/TwSFb_WamII/AAAAAAAAABc/tFLBd6HnGZM/s1600/Screen+shot+2012-01-04+at+16.57.07.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://3.bp.blogspot.com/-ZReKqXPvlfw/TwSFb_WamII/AAAAAAAAABc/tFLBd6HnGZM/s200/Screen+shot+2012-01-04+at+16.57.07.png" width="200" /&gt;&lt;/a&gt;Once you have configured your Jenkins instance for receiving the push notifications,  you can enable jobs being triggered via the push notifications:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Goto your Jenkins instance job.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Configure&lt;/span&gt; link on the left hand side of the screen.&lt;/li&gt;&lt;li&gt;Select the &lt;span style="font-family:'Courier New', Courier, monospace;"&gt;Build when a change is pushed to GitHub&lt;/span&gt; checkbox and save the configuration.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;h3&gt;Tips &amp;amp; Tricks, How to Use it on DEV/RUN&lt;/h3&gt;The plugin is identical to configure on DEV@cloud.&lt;br /&gt;&lt;h3&gt;Any Known Issues&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;The recent GitHub refresh of their site's look-and-feel broke automatic Post-Receive URL management for versions of this plugin prior to 0.9&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Relevant Documentation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin"&gt;The Jenkins Plugin Wiki page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.github.com/post-receive-hooks/"&gt;The GitHub Post-Receive hooks help page&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Cheers!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Stephen Connolly&lt;/div&gt;&lt;div&gt;Elite Developer &amp;amp; Architect&lt;/div&gt;&lt;div&gt;CloudBees&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-3854835797494715822?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/3854835797494715822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/better-integration-between-jenkins-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3854835797494715822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3854835797494715822'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/better-integration-between-jenkins-and.html' title='Better Integration Between Jenkins and GitHub (with the GitHub Jenkins Plugin)'/><author><name>Stephen Connolly</name><uri>http://www.blogger.com/profile/13294521344496292534</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-hT1p5GV_zsE/Thqy7e6O6rI/AAAAAAAAAAg/u_WyNZsGv4k/s220/me-120x120-cropped.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-A5jxC7YqxeY/TwSAbFqlwrI/AAAAAAAAABE/bkEYoA1JtBw/s72-c/Screen+shot+2012-01-04+at+16.33.22.png' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Dublin, Co. Dublin, Ireland</georss:featurename><georss:point>53.344104 -6.2674937</georss:point><georss:box>53.268458 -6.4254222 53.41975 -6.1095652000000005</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-458604409719824101</id><published>2012-01-10T09:00:00.002-05:00</published><updated>2012-02-18T17:17:34.979-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Global Build Stats Plugin</title><content type='html'>&lt;div color="rgba(255, 255, 255, 0.917969)" face="arial, sans-serif" size="13px"&gt;&lt;b&gt;Overview&lt;/b&gt;&lt;/div&gt;&lt;div color="rgba(255, 255, 255, 0.917969)" face="arial, sans-serif" size="13px"&gt;For every job, Jenkins maintains a set of past builds that it uses to compute the "weather" of a project as well as trends for unit tests, build time or performance metrics. This is an awesome feature, as it goes beyond the base concept of continuous integration (CI) and brings the project to life, as a mirror of the team development practices. &lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;The drawback is that job history consumes a large amount of disk space and slows Jenkins initialization, so you have to configure a retention strategy to reduce the footprint of your jobs' history. This also only gives you a per-job view, not the whole Jenkins instance. &lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-cx2Rj4sJMo8/TwMZBqcqhpI/AAAAAAAAFmU/-LFcRzWoO9k/s1600/global-build-stats.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-cx2Rj4sJMo8/TwMZBqcqhpI/AAAAAAAAFmU/-LFcRzWoO9k/s1600/global-build-stats.png" /&gt;&lt;/a&gt;&lt;/div&gt;Jenkins Global Build Stat plugin has been designed to get usage statistics at an upper level. As Jenkins does for jobs, it gathers data for every build but doesn't keep detailled bits for each run. Storing build history as synthetic information, it can keep a far longer history of Jenkins builds and compute a synthetic view of your CI activity.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Stable Release Version&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Global Build Stats plugin was created by &lt;a href="http://fcamblor.wordpress.com/"&gt;Frédéric Camblor&lt;/a&gt; for his personal use, and has reached a 1.2 release with various progressive improvements, thanks to active Jenkins community contribution. This is a typical example of how the Jenkins open source community works.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Requirement for Plug-in Use&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Global Build Stats plugin is a self-contained plugin, that can be installed on top of any 1.398+ Jenkins instance. The graph engine is pure Java-based, which means it does not require the native library to be installed.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Step-by-Step Instructions on How to Use It&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span"&gt;After plugin installation, &lt;/span&gt;Global Build Stats&lt;span class="Apple-style-span"&gt; is available on the Jenkins administration page. First, initialize data for the existing builds that Jenkins has maintained as jobs history. This will create the initial dataset for &lt;/span&gt;Global Build Stats&lt;span class="Apple-style-span"&gt;, that can used to set up statistical charts and will enrich with new builds.&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Next, create charts with various criteria. Charts only report build time, but can filter by job name, slave node used for building or status. A chart can easily be created to monitor a specific build slave or successful builds of a set of jobs related to team activity. Here is a sample chart of jobs running on DEV@cloud to build...DEV@cloud:&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZHpC14daS0c/TwMb6AxMCRI/AAAAAAAAFmg/R1Skq2LncBw/s1600/showChart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ZHpC14daS0c/TwMb6AxMCRI/AAAAAAAAFmg/R1Skq2LncBw/s1600/showChart.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;As it doesn't use Jenkins jobs build history (but for data initialization), Global Build Stats will store build history in custom files; that may increase the data storage needed by gigabytes. For this reason, it's important to configure a dedicated retention strategy. The simplest and most useful is to set up the number of days to keep builds history. You can then compute and compare CI usage for, say, the last six months, without requiring a huge hard disk, and generate a large set of charts based on usage.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Tips &amp;amp; Tricks, How to Use it on DEV/RUN&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XLGoIQvGCgI/TwMX34sO3GI/AAAAAAAAFmI/N3HPEWAcZAQ/s1600/estimate.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://4.bp.blogspot.com/-XLGoIQvGCgI/TwMX34sO3GI/AAAAAAAAFmI/N3HPEWAcZAQ/s200/estimate.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Global Build Stats can be used to compute the total cumulative build time for selected jobs. This can be very useful if you consider migrating your CI to CloudBees DEV@cloud service, but you need an estimate of hosting cost.&lt;br /&gt;&lt;br /&gt;Running a few test builds on CloudBees infrastructure to determine the ratio between our build slave velocity and your own infrastructure, you can then estimate the build minutes required, per month, for your usage of Jenkins. Thanks to job filtering, you can do this calculation on a subset of your jobs that can be run on a DEV@cloud FREE subscription with the limited set of &lt;a href="http://wiki.cloudbees.com/bin/view/DEV/DEV@cloud+%22Essentials%22+plugins"&gt;essential plugins&lt;/a&gt;.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); clear: both; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Known Issues&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Global Build Stats plugin uses a dedicated set of files to store build statistics. Even if access is performed in an asynchronous way, on large Jenkins instances this may result in a long initialization period. For huge Jenkins build farms with a single master, a wait period of a few minutes for Jenkins to initialize on startup may be required. Improvement is planned in 1.3 via a more flexible storage engine. &lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Relevant Documentation&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Global Build Stats plugin is well documented on &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Global+Build+Stats+Plugin"&gt;https://wiki.jenkins-ci.org/display/JENKINS/Global+Build+Stats+Plugin&lt;/a&gt;. You may also get in touch with the plugin author by joining the Jenkins user mailing list.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Enjoy!&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;Nicholas de Loof, Senior Engineer&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); font-family: arial, sans-serif; font-size: 13px;"&gt;CloudBees&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-458604409719824101?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/458604409719824101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/global-build-stats-plugin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/458604409719824101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/458604409719824101'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/global-build-stats-plugin.html' title='Global Build Stats Plugin'/><author><name>nicolas deloof</name><uri>http://www.blogger.com/profile/01689687514370945173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_jqKGlYfNZVA/SFi_0o7rtRI/AAAAAAAABpI/o7xjmvFfDd0/S220/babychocobo2.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-cx2Rj4sJMo8/TwMZBqcqhpI/AAAAAAAAFmU/-LFcRzWoO9k/s72-c/global-build-stats.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-2664434238540595166</id><published>2012-01-10T03:03:00.001-05:00</published><updated>2012-01-10T06:12:19.924-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='Sacha'/><title type='text'>CloudBees Wins a Perfect Trifecta!</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-gYQygduW-Qw/Twu__fvCYcI/AAAAAAAAAEo/oQLOAIpRI1o/s1600/Three_Stars.jpg"&gt;&lt;img alt="" id="BLOGGER_PHOTO_ID_5695857251311575490" src="http://1.bp.blogspot.com/-gYQygduW-Qw/Twu__fvCYcI/AAAAAAAAAEo/oQLOAIpRI1o/s320/Three_Stars.jpg" style="float: right; height: 293px; margin-bottom: 10px; margin-left: 10px; margin-right: 0px; margin-top: 0px; text-align: justify; width: 320px;" border="0" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;I always start the New Year with plenty of well-intended resolutions. Never mind, most of them don’t last: as soon as I start hitting the post-break reality, resolutions seem harder to satisfy, exceptions to whatever I have committed to seem to stack up and, oh well…maybe next year.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;For now, the same logic doesn’t seem to apply at CloudBees. Here’s why.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In 2010, we committed to ourselves that in 2011 we would offer the first end-to-end, development-to-production Java PaaS in GA. Last year, in January 2011, we announced the first end-to-end, development-to-production, Java PaaS in GA. That was a great way to start the year -- without breaking an important New Years resolution.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In 2011, we committed to aggressively communicating to the industry who CloudBees is and what we offer. We did just that. As if it was a mirror image of January 2011, this January--in just a few days—also saw that resolution come to be! In just a few days, CloudBees received three awards!&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The first one was &lt;i&gt;NetworkWorld,&lt;/i&gt; who recognized CloudBees as one of “&lt;a href="http://www.networkworld.com/news/2012/010512-tech-startups-254557.html"&gt;9 hot technology startups to watch in 2012&lt;/a&gt;.” Wow - not bad for a one-year old company!&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The next day, &lt;i&gt;Dr. Dobbs&lt;/i&gt; announced the &lt;a href="http://drdobbs.com/slideshows/232301291?pgno=1"&gt;JOLT Awards&lt;/a&gt;&lt;u&gt;&lt;span style="color:#000099;"&gt;.&lt;/span&gt;&lt;/u&gt; CloudBees received an Honorable Mention and, according to Executive Editor Andrew Binstock, “…&lt;i&gt;CloudBees was included for special distinction be&lt;/i&gt;cause we strongly feel it indicates an important new direction in coding.”&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Finally, last but not least, today we received an “&lt;a href="http://www.infoworld.com/slideshow/24605/infoworlds-2012-technology-the-year-award-winners-183313?source=fssr%23slide12"&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-style: italic;"&gt;InfoWorld&lt;/span&gt; 2012 Technology of the Year Award&lt;/span&gt;&lt;/a&gt;,” placing us in good company with products such as … Amazon Web Services, the iPad, Apple Siri, MacBook Air, etc. You can also &lt;a href="http://www.cloudbees.com/press-room/cloudbees-awarded-infoworld-technology-year-leading-java-cloud-offering.cb"&gt;read the press release&lt;/a&gt; we issued today.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;With such a great start, I have a very good feeling about CloudBees in 2012...and I can’t wait to see what NEXT January may also bring! After all, good things happen in threes…&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Onward,&lt;/div&gt;Sacha&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-2664434238540595166?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/2664434238540595166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/cloudbees-wins-perfect-trifecta.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2664434238540595166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/2664434238540595166'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/cloudbees-wins-perfect-trifecta.html' title='CloudBees Wins a Perfect Trifecta!'/><author><name>Heidi Gilmore</name><uri>http://www.blogger.com/profile/08832406512250828531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-gYQygduW-Qw/Twu__fvCYcI/AAAAAAAAAEo/oQLOAIpRI1o/s72-c/Three_Stars.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-4637263155909370352</id><published>2012-01-06T11:16:00.000-05:00</published><updated>2012-01-06T11:17:52.960-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='Kohsuke kawaguchi'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Creating Jenkins: Kohsuke's Story on Chariot Techcast</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-duNj6tEfSm4/TwZFKMv0o8I/AAAAAAAAAWc/KMHsk1mitqA/s1600/kkawaguchi-large.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-duNj6tEfSm4/TwZFKMv0o8I/AAAAAAAAAWc/KMHsk1mitqA/s200/kkawaguchi-large.jpg" width="183" /&gt;&lt;/a&gt;&lt;a href="http://chariotsolutions.com/" target="_blank"&gt;Chariot Solutions&lt;/a&gt;' Ken Rimple featured our very own Jenkins founder, Kohsuke Kawaguchi, on his Chariot Techcast Podcast this week. Kohsuke created Jenkins as a way to make sure he didn’t forget to check in files for the CVS projects he contributed to…. and now tens of thousands of developers worldwide use the tool for continuous integration. (&lt;a href="http://pages.cloudbees.com/jenkins-survey-2011.html" target="_blank"&gt;A survey last month&lt;/a&gt; shows that 82% of them consider Jenkins mission-critical to their development process!)&lt;br /&gt;&lt;br /&gt;In the interview, Kohsuke discusses…&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; The challenges in developing a tool like Jenkins&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Motivations for building Jenkins and developing on his own when no one was using it&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Differences now that Jenkins is such a big hit&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; How he came up with the plug-in system and transparency of project and developer community&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; How the name Jenkins came to be&lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Current efforts to improve Jenkins &lt;br /&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; And more...&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;a href="http://techcast.chariotsolutions.com/webpage/chariot-tech-cast-episode-68-kohsuke-kawaguchi-creator-of-jenkins%20" target="_blank"&gt;Listen and learn!&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-4637263155909370352?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/4637263155909370352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2012/01/creating-jenkins-kohsukes-story-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/4637263155909370352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/4637263155909370352'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2012/01/creating-jenkins-kohsukes-story-on.html' title='Creating Jenkins: Kohsuke&apos;s Story on Chariot Techcast'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-duNj6tEfSm4/TwZFKMv0o8I/AAAAAAAAAWc/KMHsk1mitqA/s72-c/kkawaguchi-large.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-8259750791307747743</id><published>2011-12-22T09:00:00.001-05:00</published><updated>2011-12-22T12:20:50.897-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='devops'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Jenkins Community Survey Results: 82% Consider Jenkins Mission Critical</title><content type='html'>The results from the first Jenkins Community Survey are in! 624 people took the time to share how they use Jenkins and tell us what capabilities matter most to them.&lt;br /&gt;&lt;br /&gt;Highlights:&lt;br /&gt;&lt;ul&gt;&lt;a href="http://3.bp.blogspot.com/-R2DNoepBuoQ/TuuKFAIvpMI/AAAAAAAAAWI/ItBEWSrJQ4s/s1600/logo%252Btitle.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="102" src="http://3.bp.blogspot.com/-R2DNoepBuoQ/TuuKFAIvpMI/AAAAAAAAAWI/ItBEWSrJQ4s/s320/logo%252Btitle.png" width="320" /&gt;&lt;/a&gt;&lt;li&gt;&lt;b&gt;82% &lt;/b&gt;of respondents said Jenkins is mission critical to their development process&lt;/li&gt;&lt;li&gt;&lt;b&gt;71%&lt;/b&gt; use Jenkins as their only CI tool&lt;/li&gt;&lt;li&gt;Jenkins is useful for companies of any size, but &lt;b&gt;76%&lt;/b&gt; work for organizations with &amp;gt; 10 developers &lt;/li&gt;&lt;li&gt;&lt;b&gt;80%&lt;/b&gt; of respondents have 3 or fewer masters and 10 or fewer build agents&lt;/li&gt;&lt;li&gt;&lt;b&gt;65%&lt;/b&gt; of companies have 10 or fewer executors&lt;/li&gt;&lt;li&gt;&lt;b&gt;76%&lt;/b&gt; have between 2 and 50 projects &lt;/li&gt;&lt;li&gt;Additional reporting capabilities and high availability were the highest-prioritized features&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://pages.cloudbees.com/jenkins-survey-2011.html" target="_blank"&gt;Check out the full survey results here&lt;/a&gt; &lt;/b&gt;(minimal registration required). You’ll learn which features users thought were most important to develop, which factors are most influential in making Jenkins easier to adopt, and many other insights into a typical Jenkins installation.&lt;br /&gt;&lt;br /&gt;Many, many thanks to everyone who took the survey. You have been instrumental in helping the Jenkins community focus on the most needed features! And congratulations to Chris Dolan, who won the drawing for the AppleTV.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-8259750791307747743?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/8259750791307747743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2011/12/jenkins-community-survey-results-82.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/8259750791307747743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/8259750791307747743'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2011/12/jenkins-community-survey-results-82.html' title='Jenkins Community Survey Results: 82% Consider Jenkins Mission Critical'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-R2DNoepBuoQ/TuuKFAIvpMI/AAAAAAAAAWI/ItBEWSrJQ4s/s72-c/logo%252Btitle.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-3718613109192601508</id><published>2011-12-21T12:14:00.000-05:00</published><updated>2011-12-28T13:03:09.778-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUN-at-cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud development'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform as a Service'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><title type='text'>Hello Java, Hello iPad, Hello World!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hR8Rkv8YA4I/TvIIzKpQNyI/AAAAAAAAAWQ/xKgx_h8FOzU/s1600/Even+Cloud+Dogs+Can.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="253" src="http://2.bp.blogspot.com/-hR8Rkv8YA4I/TvIIzKpQNyI/AAAAAAAAAWQ/xKgx_h8FOzU/s400/Even+Cloud+Dogs+Can.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;A CloudBees New Year’s Challenge&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Experience the joy of Platform as a Service as we ring in the New Year!&amp;nbsp; Publish an sample “Hello Java in the Cloud” application on the &lt;a href="http://www.cloudbees.com/platform-overview.cb" style="color: #cc0000;" target="_blank"&gt;CloudBees PaaS&lt;/a&gt; by January 16th, and we’ll enter you to win an iPad 2.&amp;nbsp; We even give you the example code – all you have to do is roll it live, which only takes minutes. And maybe spice it up a bit (you can add your own text to the photo above)!&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #cc0000;"&gt;Bonus for Charity&lt;/b&gt;&lt;br /&gt;For every app created and tweeted under the #CloudBeesJava hashtag, we’ll donate $5 to the &lt;a href="http://www.icrc.org/" style="color: #cc0000;" target="_blank"&gt;International Committee of the Red Cross&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #cc0000;"&gt;Bonus X2&lt;/b&gt;&lt;br /&gt;For everyone who ReTweets your app link with the hashtag #CloudBeesJava, we’ll donate an additional $1! &lt;br /&gt;&lt;br /&gt;&lt;b style="color: #cc0000;"&gt;Bonus X3&lt;/b&gt;&lt;br /&gt;Any app that is published and tweeted is eligible, but if you make your app fun, interesting, and/or festive, we’ll triple-enter your name to win the iPad.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #cc0000;"&gt;How It Works&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Publish an app on CloudBees. &lt;a href="https://github.com/cloudbees/holiday-competition" style="color: #cc0000;" target="_blank"&gt;Get started now!&lt;/a&gt;&lt;span id="goog_600714510"&gt;&lt;/span&gt;&lt;span id="goog_600714511"&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Using the handy button, tweet the app’s URL using the hashtag, #CloudBeesJava. Feel free to post on your Facebook page, blog, etc.&lt;/li&gt;&lt;li&gt;We’ll monitor the hashtag and enter each app to win the iPad. Each RT will garner $1 more to charity (up to $1000 for RTs, but there's no donation limit for apps deployed). If you modify the sample app to make something cool, we’ll enter you three times. No worries if you write an app but don’t have Twitter – just email me the URL and I’ll get your name in the pot (lisa AT cloudbees.com).&lt;/li&gt;&lt;li&gt;Win! You could win an iPad 2. The International Committee of the Red Cross wins more resources to help the world. And everyone wins the satisfaction of successfully launching a Java an app in the cloud!&lt;span style="color: #cc0000;"&gt; &lt;/span&gt;&lt;a href="http://www.cloudbees.com/cloudbees-new-years-challenge.cb" style="color: #cc0000;" target="_blank"&gt;Read the contest details here.&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;a href="https://github.com/cloudbees/holiday-competition" style="color: #cc0000;" target="_blank"&gt;Give it a try!&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;PS - Meme alert: If "I can haz PaaS" doesn't make any sense to you, check out &lt;a href="http://icanhascheezburger.com/" target="_blank"&gt;I can has cheezburger&lt;/a&gt; and &lt;a href="http://www.lolcats.com/" target="_blank"&gt;LOLcats&lt;/a&gt;... &lt;/i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-3718613109192601508?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/3718613109192601508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2011/12/hello-java-hello-ipad-hello-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3718613109192601508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3718613109192601508'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2011/12/hello-java-hello-ipad-hello-world.html' title='Hello Java, Hello iPad, Hello World!'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hR8Rkv8YA4I/TvIIzKpQNyI/AAAAAAAAAWQ/xKgx_h8FOzU/s72-c/Even+Cloud+Dogs+Can.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-5052726549245729721</id><published>2011-12-14T10:24:00.006-05:00</published><updated>2011-12-16T13:25:51.423-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>How Much Does CI Development in the Cloud Cost? Less Than You Think!</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-jxT6G0WsFo0/TuuGiKLpKYI/AAAAAAAAADI/q7Aqc2h88ts/s1600/ci_cloud_calculator.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://3.bp.blogspot.com/-jxT6G0WsFo0/TuuGiKLpKYI/AAAAAAAAADI/q7Aqc2h88ts/s320/ci_cloud_calculator.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5686786875892246914" /&gt;&lt;/a&gt;Developing in the cloud is now so cost effective, you will try to justify NOT developing in the cloud! We have some new tools to help you estimate how much it would cost you to develop on the CloudBees PaaS. But first, some background...&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To run Jenkins, you need to allocate a machine to be what is called a "Master"; this Master contains your build job definitions as well as the Jenkins job runtime scheduler - which runs at all times. While you can run build jobs on this Master, its capacity is limited and you will typically have to allocate additional computing capacity to the Master by attaching to it additional build machines - also known as "Slaves". A single Master can have tens of Slaves attached to it.&lt;br /&gt;&lt;br /&gt;The efficient technology we have developed for the  CloudBees Platform allows us to partition and isolate EC2 resources for improved efficiency.  Our underlying unit of compute power consumed by any application, including our own services like Jenkins, is an "app cell." Since our processing units are much more fine-grained than Amazon's, we can make use of our own pool more efficiently than just the m1.* levels available to you from Amazon. Consequently, the CloudBees Platform will allocate just enough capacity to run your Jenkins Master, making it a much more efficient setup than on an m1.small setup, for example. Yet, no build jobs will ever run on this Master; your build job will execute on dynamically allocated dedicated machines of your requested size (m1.small, m1.large), and will do so only for the duration of your build, by the minute. Furthermore, if you need to perform several builds in parallel, multiple machines will be dynamically allocated to your Master - but only for the duration of those builds. For example, running five ten-minute builds sequentially or in parallel will lead to the exact same cost on DEV@cloud! Consequently, with DEV@cloud, you end-up paying for a minimal fixed monthly fee for your Jenkins Master as well as for the exact number of build-minutes you've consumed (and only those in excess of your monthly quota).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;If you were to do this yourself on Amazon EC2, you would have to decide how many machines of what size to allocate of the different EC2 machine sizes -- both for your Master as well as for your Slaves -- and you'd have to account for concurrent build Slaves upfront by statically allocating the number of machines your want to your Master. Alternatively, you could handle the dynamic provisioning and de-provisioning yourself, as well as manage the Jenkins workspace state.&lt;br /&gt;&lt;br /&gt;Thus, not even accounting for the labor associated with managing the EC2 resources directly, as well as the Jenkins setup, CloudBees is able to offer a lower price for its development services like Jenkins than you would be able to achieve yourself using Amazon directly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How much lower? Check it out - &lt;a href="http://www.cloudbees.com/dev-pricing.cb"&gt;go here and calculate&lt;/a&gt;!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Onward,&lt;/div&gt;&lt;div&gt;Sacha &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-5052726549245729721?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/5052726549245729721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2011/12/how-much-does-ci-in-cloud-cost-here-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/5052726549245729721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/5052726549245729721'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2011/12/how-much-does-ci-in-cloud-cost-here-is.html' title='How Much Does CI Development in the Cloud Cost? Less Than You Think!'/><author><name>Heidi Gilmore</name><uri>http://www.blogger.com/profile/08832406512250828531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-jxT6G0WsFo0/TuuGiKLpKYI/AAAAAAAAADI/q7Aqc2h88ts/s72-c/ci_cloud_calculator.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-3063884051131819563</id><published>2011-12-13T12:34:00.028-05:00</published><updated>2011-12-14T09:56:11.499-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='DEV at cloud'/><title type='text'>Enhanced Pricing and Packaging for the CloudBees Platform</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-fQQDPNQ1Lm4/TueQFhUUikI/AAAAAAAAAC8/DJYT9kyLSqc/s1600/gift.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 184px;" src="http://4.bp.blogspot.com/-fQQDPNQ1Lm4/TueQFhUUikI/AAAAAAAAAC8/DJYT9kyLSqc/s320/gift.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5685671479095888450" /&gt;&lt;/a&gt;&lt;p    style="  ;font-family:Tahoma, Helvetica;font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'trebuchet ms';font-size:100%;"&gt;Since we launched our DEV@cloud development platform service more than a year ago, we have experienced tremendous success! Today we have thousands of developers using our services for their builds and tests.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;In the spirit of giving at this time of year, we are pleased to announce:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;Significantly lower pricing for DEV@cloud services&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;Changes in our technical support offering&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;       ...all nicely packaged up, just in time for the holidays. Read below for more about our progress this past year, and these exciting new announcements.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;b&gt;2011 Platform Highlights&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p  style=" color: rgb(69, 85, 95); font-size:100%;"&gt;&lt;span class="Apple-style-span"   style="  color: rgb(69, 85, 95));  font-family:'trebuchet ms';font-size:100%;"&gt;In the last six months, we have added lots of new features, including:&lt;/span&gt;&lt;/p&gt;&lt;ul    style="  ;font-family:Tahoma, Helvetica;font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;The ability to add integrated CloudBees Ecosystem Partner services to your DEV@cloud environment. Ecosystem Partner offerings include popular services, such as &lt;a href="http://www.cloudbees.com/platform-service-jfrog.cb" target="_blank"&gt;JFrog&lt;/a&gt;, &lt;a href="http://www.cloudbees.com/platform-service-saucelabsondemand.cb" target="_blank"&gt;Sauce Labs&lt;/a&gt;, &lt;a href="http://www.cloudbees.com/platform-service-sonarsource.cb" target="_blank"&gt;SonarSource&lt;/a&gt; and &lt;a href="http://www.cloudbees.com/platform-service-xwikicloud.cb"&gt;XWiki&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;Complete integration between the DEV@cloud and RUN@cloud services, with no need for you to set up any credentials or install any plugins&lt;/span&gt;&lt;/li&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;Ability to select a build machine that best fits your needs&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="color: rgb(69, 85, 95); "&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;We will continue to add more features on an ongoing basis. Additionally, we are working on several performance enhancements.&lt;/span&gt;&lt;/p&gt;&lt;p  style=" color: rgb(69, 85, 95); font-size:100%;"&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;b&gt;Lower Pricing for DEV@cloud Services: Efficient Technology and User Adoption&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(69, 85, 95); "&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;Today, we are announcing some changes to our development services pricing. First of all, we are removing all restrictions to the number of Git and Subversion repositories you can create: you are now only limited by the disk space allocated to your account. This is especially handy if you want to host one application per Git repository, for example.&lt;/span&gt;&lt;/p&gt;&lt;p    style="  ;font-family:Tahoma, Helvetica;font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;With regard to Jenkins, we are significantly dropping our build minute prices and extending our build minute quotas! Given the massive number of builds we are now performing, we are dropping build prices by more than 80% and moving from one cent per build minute (or 60 cents per hour) to just 10.6 cents &lt;em&gt;per hour!&lt;/em&gt; Our m1.large build prices will benefit from the same discount and will be billed at the equivalent of 42.5 cents per hour (billing still takes place by the minute). If you want to estimate what your new bill will be, we have also added a pricing calculator to our &lt;a href="http://www.cloudbees.com/dev-pricing.cb" target="_blank"&gt;DEV@cloud pricing page&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p    style="  ;font-family:Tahoma, Helvetica;font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;Also, effective immediately, our Pro and Enterprise subscription customers will benefit from a doubling of the free build quota: from 2,500 free build minutes to 5,000 for Pro subscribers, and from 5,000 to 10,000 build minutes for Enterprise subscribers.&lt;/span&gt;&lt;/p&gt;&lt;p    style="  ;font-family:Tahoma, Helvetica;font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;At these prices, doing continuous integration in the cloud should be mandatory!&lt;/span&gt;&lt;/p&gt;&lt;p class="p1"   style=" ;font-family:Tahoma, Helvetica; color: rgb(69, 85, 95);"&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;b&gt;Changes in Our Support Offering&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p1"   style=" ;font-family:Tahoma, Helvetica; color: rgb(69, 85, 95);"&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;Finally, on the support front, we are making some immediate changes. We will now provide silver support to all of our customers and only offer premium support options on-demand. Note that if you already benefit from a premium support subscription option, this change will not apply to you; you will be able to continue getting excellent support from CloudBees based on your current support terms and conditions. &lt;/span&gt;&lt;/p&gt;&lt;p class="p1"   style=" ;font-family:Tahoma, Helvetica; color: rgb(69, 85, 95);"&gt;&lt;span style="font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;We are working on additional improvements and will be communicating more about them very soon. Stay tuned!&lt;/span&gt;&lt;/p&gt;&lt;p   style=" ;font-family:Tahoma, Helvetica; color: rgb(69, 85, 95);"&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;em&gt;&lt;span&gt;&lt;span&gt;&lt;span style=" color: rgb(69, 85, 95);"&gt;P.S. Just as we were getting ready to publish this blog, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;InfoQ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span&gt;&lt;span&gt;&lt;span style=" color: rgb(69, 85, 95);"&gt; published a round-up/overview of six major PaaS offerings, including CloudBees. CloudBees was ranked very highly!&lt;/span&gt; &lt;a href="http://www.infoq.com/articles/paas_comparison" target="_blank"&gt;Read the InfoQ article&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div   style=" ;font-family:Tahoma, Helvetica; color: rgb(69, 85, 95);"&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;span style=" color: rgb(69, 85, 95);"&gt;Onward,&lt;br /&gt;&lt;/span&gt;&lt;span style=" color: rgb(69, 85, 95);"&gt;Sacha Labourey&lt;br /&gt;&lt;/span&gt;&lt;span style=" color: rgb(69, 85, 95);"&gt;CEO&lt;br /&gt;&lt;/span&gt;&lt;span style=" color: rgb(69, 85, 95);"&gt;CloudBees, Inc. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p    style="  ;font-family:Tahoma, Helvetica;font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;span style=" ;font-family:'trebuchet ms';font-size:100%; color: rgb(69, 85, 95);"&gt;Follow CloudBees:&lt;/span&gt;&lt;/p&gt;&lt;p    style="  ;font-family:Tahoma, Helvetica;font-size:100%; color: rgb(69, 85, 95);"&gt;&lt;span style=" ;font-family:tahoma, arial, helvetica, sans-serif;font-size:100%;"&gt;&lt;span style=" color: rgb(69, 85, 95);"&gt;&lt;a href="http://www.facebook.com/CloudBees" target="_blank"&gt;&lt;img src="http://pages.cloudbees.com/rs/cloudbees/images/Facebook_Sm.png" alt="Facebook" width="35" height="35" /&gt;&lt;/a&gt; &lt;a href="https://twitter.com/#!/cloudbees" target="_blank"&gt;&lt;img src="http://pages.cloudbees.com/rs/cloudbees/images/Twitter_Sm.png" alt="Twitter" width="35" height="35" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-3063884051131819563?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/3063884051131819563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2011/12/enhanced-pricing-and-packaging-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3063884051131819563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3063884051131819563'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2011/12/enhanced-pricing-and-packaging-for.html' title='Enhanced Pricing and Packaging for the CloudBees Platform'/><author><name>Heidi Gilmore</name><uri>http://www.blogger.com/profile/08832406512250828531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fQQDPNQ1Lm4/TueQFhUUikI/AAAAAAAAAC8/DJYT9kyLSqc/s72-c/gift.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-3816069350290403387</id><published>2011-12-12T18:16:00.000-05:00</published><updated>2011-12-12T18:16:52.607-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='devops'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud development'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Kohsuke kawaguchi'/><category scheme='http://www.blogger.com/atom/ns#' term='jenkins'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Devops in the Cloud – Meetup this Thursday at Netflix</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-Ke1GAGh7eeg/TuZ-ym5h3yI/AAAAAAAAAWA/mtHS2diiEow/s1600/devopsinthecloud.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="194" src="http://2.bp.blogspot.com/-Ke1GAGh7eeg/TuZ-ym5h3yI/AAAAAAAAAWA/mtHS2diiEow/s320/devopsinthecloud.jpg" width="320" /&gt;&lt;/a&gt;&lt;a href="http://www.netflix.com/" target="_blank"&gt;Netflix&lt;/a&gt;, &lt;a href="http://www.jfrog.com/" target="_blank"&gt;JFrog&lt;/a&gt;, and CloudBees are excited to host a &lt;b&gt;Devops in the Cloud&lt;/b&gt; Meetup this Thursday! Taking place for the first time at the Silicon Valley, Devops in the Cloud will put the spotlight on cloud computing best practices, tricks and tips from those who have been there.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Where: &lt;/b&gt;Netflix campus in Los Gatos, CA &lt;br /&gt;&lt;br /&gt;&lt;b&gt;When:&amp;nbsp;&lt;/b&gt; Thursday, December 15th, 5:30 PM to 8:30 PM (PT)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Details:&lt;/b&gt; &lt;a href="http://devopsinthecloud-esli.eventbrite.com/" target="_blank"&gt;Full invitation here&lt;/a&gt;, but it’s sold out and the waiting list is full. So…&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Live Stream:&amp;nbsp;&lt;/b&gt; &lt;b&gt;&lt;a href="http://steveonjava.com/svjugfx/" target="_blank"&gt;Attend virtually via live-stream! &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You’ll hear about thoughts, solutions, tools and visions of future development practices in the cloud. Even better, a Netflix case study will demonstrate how many of these powerful processes are already possible.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Featured Presentations&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Building Cloud Tools for Netflix&lt;/i&gt; – Carl Quinn, Joe Sondow, NETFLIX&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Where are my runtime artifacts?!&lt;/i&gt; Cloud Deployment Using a Smart Repository – Frederic Simon, JFROG&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Maintaining reliability in an unreliable world&lt;/i&gt; – Jeremy Edberg, NETFLIX&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;a href="http://www.cloudbees.com/dev.cb" target="_blank"&gt;DEV@cloud&lt;/a&gt;, Behind the curtain&lt;/i&gt; – Kohsuke Kawaguchi, JENKINS founder and CLOUDBEES Architect&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Whether you're a Software Developer, a Release Engineer or a DevOps, this event is your opportunity to take a glimpse into the future of CI in the cloud.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://steveonjava.com/svjugfx/" target="_blank"&gt;Don't miss the live stream!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-3816069350290403387?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/3816069350290403387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2011/12/devops-in-cloud-meetup-this-thursday-at.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3816069350290403387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/3816069350290403387'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2011/12/devops-in-cloud-meetup-this-thursday-at.html' title='Devops in the Cloud – Meetup this Thursday at Netflix'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Ke1GAGh7eeg/TuZ-ym5h3yI/AAAAAAAAAWA/mtHS2diiEow/s72-c/devopsinthecloud.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5129937550862346934.post-5433915554299064526</id><published>2011-11-18T09:00:00.000-05:00</published><updated>2011-11-18T09:00:06.453-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUN-at-cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='Ecosystem'/><category scheme='http://www.blogger.com/atom/ns#' term='partner'/><title type='text'>SendGrid is Now Part of the CloudBees Ecosystem</title><content type='html'>&lt;i&gt;This blog is a guest post from Brandon West, Developer Relations Engineer at SendGrid…&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sendgrid.com/" target="_blank"&gt;SendGrid&lt;/a&gt; is happy to announce that we've partnered with &lt;a href="http://www.cloudbees.com/" target="_blank"&gt;CloudBees&lt;/a&gt;, a Platform as a Service (PaaS) provider that offers cloud-based services for building, testing and deploying Java web applications. As of today, SendGrid's email service is now part of the &lt;a href="http://www.cloudbees.com/platform-ecosystem.cb" target="_blank"&gt;CloudBees Ecosystem&lt;/a&gt;! CloudBees and SendGrid are both focused on reducing the friction that developers have to deal with when it comes to configuring and building out infrastructure so that they can spend their time building great things.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-qixD6EkDx20/TsH4YOpgpgI/AAAAAAAAAV4/Pvy6dHOF9SY/s1600/EmailClick.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-qixD6EkDx20/TsH4YOpgpgI/AAAAAAAAAV4/Pvy6dHOF9SY/s200/EmailClick.jpg" width="178" /&gt;&lt;/a&gt;For those of you who aren't familiar with SendGrid, our service makes it simple to send email from any web application. SendGrid's cloud-based SMTP email infrastructure relieves developers of the cost and complexity of maintaining custom in-house email infrastructures. We provide reliable email delivery, scalability, and real-time analytics along with flexible APIs that make custom integration a breeze. Our service alleviates the email headaches for developers, allowing them to focus on making great apps.&lt;br /&gt;&lt;br /&gt;If you've got a CloudBees account, you can now enable SendGrid from the CloudBees Ecosystem page with one simple click. SendGrid is a great choice for CloudBees customers looking to add a robust cloud-based SMTP email solution to their applications, and our partnership will make it easier than ever to do just that. If you're a working on a Java application and are not already using CloudBees, we encourage you to sign up for a free account and &lt;a href="https://grandcentral.cloudbees.com/account/signup" target="_blank"&gt;give it a try&lt;/a&gt;. If you build an app with SendGrid and CloudBees and want to &lt;a href="mailto:community@sendgrid.com" target="_blank"&gt;share it with us&lt;/a&gt;, we may feature it in a future blog post. We’re excited to see what people build!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5129937550862346934-5433915554299064526?l=blog.cloudbees.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.cloudbees.com/feeds/5433915554299064526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.cloudbees.com/2011/11/sendgrid-is-now-part-of-cloudbees.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/5433915554299064526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5129937550862346934/posts/default/5433915554299064526'/><link rel='alternate' type='text/html' href='http://blog.cloudbees.com/2011/11/sendgrid-is-now-part-of-cloudbees.html' title='SendGrid is Now Part of the CloudBees Ecosystem'/><author><name>Lisa Wells</name><uri>http://www.blogger.com/profile/18246319018037599524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/-_n5PqCaePHY/TX2Fd8ZkTmI/AAAAAAAAAAM/kVruFleImfo/s220/_DSC9480-crop-sm.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-qixD6EkDx20/TsH4YOpgpgI/AAAAAAAAAV4/Pvy6dHOF9SY/s72-c/EmailClick.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
