Friday, March 30, 2012

Using Codesion Git Repositories with DEV@cloud Jenkins

The CloudBees Ecosystem provides a set of services that are integrated with the core CloudBees services. Codesion is the newest entrant into the ecosystem. Codesion provides code repositories, issue tracking services and others (full listing here). 

Signing up for Codesion
Once logged into CloudBees, go to the Services menu and click on Codesion (if you are currently logged in to DEV@cloud, the Subscribe to Codesion Service link will take you to the page). Enter the appropriate configuration information. You will get an email from the Codesion team with the domain, email and password for the Codesion instance provisioned for you. 

Click on the Codesion link in CloudBees Services menu and you will land at Codesion hub, enter the provided credentials to start using Codesion. The landing hub looks like the following:
Codesion Hub in CloudBees
You can create new repositories by clicking the Projects tab and creating a new project and choosing the appropriate repository type within the project. In the above picture, you can see that I have created a project called tutorial (Domain field within the Getting Started section).

Setting up Access Control 
For each repository, we need at least two users that can access the repository. The first users (actually type of users) are developers who can commit code and the second type of user is the Jenkins instance that will checkout code and run the builds. 

From DEV@cloud Job Configuration Page
To create the users, go to the People tab in the Codesion hub and add a new user. For each user, you need to enter an SSH public key to access the account. Setting up the SSH key is fairly straightforward for a developer (the developer should enter the one they are using). For Jenkins to gain access, you need to pick the key from the CloudBees DEV@cloud Authorization -> CloudBees Public Key field from the configuration of a job.

Enter this key into the key field of the user config within the Codesion user config page:

From Codesion People Tab
The final users screen looks like the following for me:

The last step is to add these users to the project (aka repository) so that the repository service can allow access to these users. Go to Projects->PROJECT NAME->People on Codesion Hub and add the users that you just created. 
Associate users to repository

Once done - you should have access to the repositories and be able to build it from the CloudBees DEV@cloud instance. For example: in the above images, I have created a developer user called (tutorial) that checks in the code and a user called (jenkins) that checks out the code and builds it on DEV@cloud.

- Harpreet Singh
Senior Director, Product Management
Follow CloudBees:
Facebook Twitter

Sunday, March 25, 2012

Style: It's a Mad Man Who Pretends He Doesn't Want It... (a.k.a. Checkstyle)

Any seasoned developer wears the scars of a braces war... if the decision as to which is preferred:

Exhibit AExhibit BExhibit CExhibit D
if ( ... ) {
    // do this
} else {
    // do that
if ( ... ) 
    // do this
    // do that
if ( ... ) 
    // do this
    // do that
if ( ... ) 
    // do this
    // do that

... fills you with dread and triggers flashbacks[1]... we know your pain... every developer has their view on what is the one true brace style and, being a disagreeable bunch at the best of times, everyone else's style is moronic at best (Note: I am not saying any of the above styles are/are not the one true brace style).

But move past the flashbacks... when you are maintaining an existing codebase, it is a joy to find that the code base is consistently styled... we can disagree on what the styling should look like, but once a victor has been established for a code base, maintaining the code can be easier.

For Java code, there is a well known utility for checking compliance with a coding style... Checkstyle. You describe your team's victorious code style (the one that everyone hates because management forced a decision and gave everyone at least one win) and you can now measure the project's compliance with the coding style.

At a previous employer, we had the braces war. We set up the Checkstyle ruleset, and then we promptly did what everyone else does... we forgot all about it. Developers never ran Checkstyle on their changes, and the code just kept on getting messier and messier...

Shortly afterwards, I set up a Jenkins (well it had a different name at the time) server, and a co-worker (Peter Reilly) knocked together a very rough and ready Checkstyle plugin[2]... strangely just by adding a graph of the number of Checkstyle violations, without any other prodding, the number of Checkstyle violations went from 60,000+ to less than 20 in the space of about six months! The code base was a lot tidier and easy to maintain. Victory... all because Mr. Jenkins was reporting the Checkstyle metric for the developers... they didn't have to remember to run Checkstyle... and when they were stuck on a hard problem, they could always tidy up some code (a mind-numbing task) while their subconscious solved the hard task.

In any case, the Jenkins Checkstyle plugin is one plugin that you can use to try to replicate that feat for yourself on your projects... assuming you survive the process of picking which one, true brace style to use, that is!

Stable Release Version
The latest release is 3.24 which was released in March 2012.

Requirements for Plugin Use
This plugin requires Jenkins 1.409 or newer, as well as the Analysis-Core plugin version 1.38.

Step-by-Step Instructions on How to Use the Checkstyle Plugin

  1. Go to your Jenkins instances root page.
  2. If your Jenkins instance has security enabled, login as a user who has the Overall | Administer permission.
  3. Select the Manage Jenkins link on the left-hand side of the screen.
  4. Select the Manage Plugins link.
  5. On the Available tab, select the Checkstyle Plugin and click the Download and Install button at the bottom of the page. (All the required dependent plugins will automatically be downloaded for you.)
  6. (If you are using a version of Jenkins prior to 1.442) Restart Jenkins once the plugins are downloaded.


Before you can use this plugin you must ensure that your job is generating Checkstyle reports. The Jenkins plugin will not run Checkstyle for you. It will report the results that your build produces.

With Maven-based projects, this is usually a case of ensuring that the maven-checkstyle-plugin is executed during your build. With ANT-based projects, you will need to ensure that your build invokes the Checkstyle ANT tasks, while other build systems will have their own integrations.

Usually the Checkstyle results will be saved in an XML file called checkstyle-results.xml. If you are that lucky, then enabling the plugin is just a matter of selecting the Publish Checkstyle analysis results checkbox in the Post-build Actions:

With the Freestyle project type there is a text box where you can enter the filename pattern that the plugin will use to find the checkstyle XML results. The text box assumes that the pattern is **/checkstyle-results.xml unless you enter an alternative pattern, so 99 times out of 100 you can just leave the text box empty.

If you are using the Maven project type, the plugin will capture the XML filename(s) from the Maven plugin, so there is no need to configure the filename pattern, and as a result there is no text box to fill in!

Tips & Tricks

There are some additional advanced options available if you click on the Advanced button for the Checkstyle analysis plugin:
  • By default, the plugin only runs for stable or unstable builds (on the assumption that you only run the Checkstyle reports when the code compiles). If you need the reports to be collected for every build, just enable the Run always option.
  • If you are using a Freestyle project[3] with an ANT or Maven multi-module project, you may want to see the reports broken down by module. You can ask the plugin to try and auto-detect the modular structure of your build by enabling the Detect modules option.
  • You have a project with 10,000 Checkstyle errors. You don't want to fix all of them this sprint, but you want to make some progress, i.e. get down to 9,500 -- you certainly don't want things getting worse. The solution here is to use a mix of the Health and Status thresholds.

  • Set 0% health to the current number of Checkstyle errors, e.g. 10,000. Set 100% health to somewhere between 20 and 50% better than your target, e.g. 9,300. Set the status thresholds so that unstable is about 10% of your target, e.g. 9,950 and failed is slightly worse than where you are, e.g 10,001:

The result will be that developers will be prodded into fixing some Checkstyle issues (as the build will be called out as unstable) and prevented from letting things get worse (as the build will be marked as failed if that happens) and once some progress has been made, the weather reports will start to improve, giving a nice subtle nudge... just the kind of positive feedback that works.

How to Use it on DEV@cloud

If you are using the CloudBees Platform as a Service (PaaS), the plugin is identical to configure on DEV@cloud.

Any Known Issues
  • The Checkstyle plugin can be somewhat demanding on memory, if your project has a very large number of Checkstyle violations, you may have to resort to either fixing a large chunk of them or switching to the Violations plugin which is uses a different parsing engine and usually maintains a lower memory footprint.
  • Some people using the Jenkins Maven Project type have reported that for some structures of their pom.xml files, the plugin does not notice when the maven-checkstyle-plugin is run on a build which only invokes the main lifecycle.
Relevant Documentation
Elite Developer and Architect

[1] Possibly to a time from before you assumed somebody else's identity.
[2] Peter's plugin went on to evolve into the Violations Plugin which also can be used to report Checkstyle results. To understand why there are two plugins risks opening a cat of worms... Peter does not use Maven for building his own projects... favoring ANT for some reason or other... Peter usually asked me for help if he had issues with Maven... I am not sure why ;-). Add into the mix my disapproval of the Jenkins Maven Project Type... and you might have some guesses as to why the violations plugin did not, for a long time, support the Jenkins Maven Project Type (Note: freestyle projects with a Maven build step were always supported... and the Maven Project Type has been supported since May 2008 anyway)
[3] And I always do.

Follow CloudBees:
Facebook Twitter

Thursday, March 22, 2012

Jenkins Jabber Plugin with Google Talk

Jenkins is a continuous integration server communicating with many different protocols, such as SSH, Git and SVN. One of the more interesting ones is around instant messaging. This blog entry will focus on the Jabber protocol and how you can turn Jenkins into Jabber bot with the Jabber plugin.

When the Jabber plugin is installed and configured, Jenkins can send notification messages to a chat room, and users can send messages to Jenkins to obtain information and perform actions, such as builds.

Stable Release Versions
The latest release of the Jabber plugin is 1.22 and was released in November 2011. The plugin works with Java 6, if you require Java 5 then you are advised to stay on 1.16 or lower. It has known issues. 

Requirements for Plugin-Use
Jenkins 1.392 or newer and the utility plugin "instant-messaging" (called "Instant Messaging plugin").

How to Use it?
Jabber is a popular chat protocol and Google Talk implements it. To demonstrate the use of the Jabber plugin I will use Google Talk. With Google Talk, Jenkins will communicate with a particular Google email id. You can also use any of the Jabber services to setup a chat room instead of 1-1 communication. 

Step-by-Step Instructions on How to Use the Jabber Plugin


  1. Go to your Jenkins instances root page.
  2. If your Jenkins instance has security enabled, login as a user who has the Overall | Administer permission.
  3. Select the Manage Jenkins link on the left-hand side of the screen.
  4. Select the Manage Plugins link.
  5. On the Available tab, select the Jabber and Instant Messaging Plugin and click the Download and Install button at the bottom of the page.
  6. (If you are using a version of Jenkins prior to 1.442) Restart Jenkins once the plugins are downloaded.
System level configuration

  1. Go to your Jenkins instances root page.
  2. If your Jenkins instance has security enabled, login as a user who has the Overall | Administer permission.
  3. Select the Manage Jenkins link on the left-hand side of the screen.
  4. Select the Configure System link on the top of the screen.
  5. Click Enable Jabber Notification, enter Jabber Id (email id for Google Talk) and Password
  6. Add for Server and 5223 for Port; disable Enable SASL authentication (Google Talk gives a problem with this setting on)
  7. Enter the string in the Bot command prefix that you will like to use to communicate with Jenkins.
Job level configuration

  1. Go to your Jenkins instances root page. Click on the job that you want to configure. 
  2. Click on Configure on the left-hand side of the screen.
  3. Under Post Build Actions, enable Jabber Notification and under Targets enter the email address that you want notifications to go to.
  4. The Advanced section has additional options that control the granularity of messages (such as only failures, all or message on build starts) that can be turned on as desired.
If you run the job through Jenkins, you will see a message pop up on Google chat with the job status.  Jenkins has a sense of humor as well.  If there are no jobs running, then Jenkins will tell you that it is bored.

So lets give Jenkins some work by interacting with the chat client. The command prefix !jenkins identifies a chat message as a command and is configurable from the Jabber configuration section of the main Jenkins configuration page. Here is a snapshot of a number of commands that I gave Jenkins via chat.

How to Use the Plugins on DEV@cloud/RUN@cloud?
The Jabber plugin can be installed DEV@cloud Enterprise accounts by filing a support ticket and it can be used in the same manner as with any other Jenkins deployment.

Relevant Documentation

Harpreet Singh, Senior Director Product Management
Follow CloudBees:
Facebook Twitter

Monday, March 19, 2012

Angry Birds, Cloud Bees, & Naked Cowboys at SXSW

We Bees are thrilled to have contributed to the SXSW buzz here in Austin over the last 10 days. More than 20,000 folks converged on my fair city (and Ryan’s)* to revel and learn at the SXSW Interactive conference, and many more thousands descended for the Music and Film festivals. CNN did a fabulous video on startups at the Interactive conference if you want to get a feel for some of the tech-focused excitement!

While SXSW has gotten so big it's hard to know where to spend your time, Austin-based startup incubator Capital Factory publishes a fantastic list of events targeted at techies like us, and they also throw the annual ATX Startup Crawl

Did you absently muse, what's a startup crawl? Well… picture a pub crawl. But instead of drinking from bar to bar, you drink progressively at the offices of the coolest startups in Austin with a bunch of like-minded techies. Oh, and drinks, eats, and SWAG are free. More than 50 startups joined in the fun this year! For those of us who don't have offices located along the Startup Crawl shuttle bus route, Capital Factory generously opened their office in the Omni hotel and let us set up camp. Our table was a big hit with its Angry Birds and water-balloon-launcher-turned-bird-hurdler (oh yeah, and our cool Java Platform as a Service). Despite the sudden onset of a cold and nasty rain, 1500+ people showed up to meet, greet, glug, and "shoot the bird" at fellow revelers.

CloudBees was also delighted to support Mobile Monday SXSW. Mobile Monday brings together mobile industry aficionados who are interested in fostering cooperation and cross-border P2P business opportunities, and clearly they know how to throw a great party!

Once again, we had the privilege to set up a table and talk to folks about how useful CloudBees is for mobile app development… especially if you need to get up and running fast.

In other news, we were delighted that our friends at HP featured some of our bees on video in their SXSW expo booth. As an aside, they added some amazing coolness (pun intended) to Austin's ambience with their pseudo-ice sculpture and three nights in a row of rockin' parties!

I also loved their bat signal on projected into the Austin skyline…

Our buddies at SendGrid also really know how to throw a bash, in addition to being experts at getting email delivered and easily integrated into your app. Not only did they have a very fully-stocked hospitality suite, they lavishly hosted partners, customers, and anyone else lucky to score an invite at The Tap Room, one of Lance Armstrong's bars in the heart of the Austin nightlife district. Piles of food, free-flowing drinks, pool, and a wild-west-themed photo booth kept guests well-entertained. Oh, and I'm not sure I've ever seen so many super-soft tshirts piled so high! SendGrid really does know a thing or two about branding...


Austin is known for its hospitality, but I have to say SXSW week is special. Everyone I talked to was so happy to be here… it was impossible to miss the unique energy and excitement surrounding this conference.

And seriously, when else do you see naked cowboys in the middle of the street?

-- Lisa Wells, Marketing Drone

*Yes, CloudBees is based in Boston, but we have working bees making honey all over the world, including myself and Developer Extraordinaire Ryan Campbell here in Austin. If you're nearby, look us up!

Saturday, March 17, 2012

Let Jenkins Keep You Notified! (with the Instant Messaging Plugin)

There are times when email just isn't fast enough... actually, as a developer, there are times when you just don't want to have your email open, as it can be too big a source of distraction. Your manager emails you with some “urgent” question that needs answering right now... but you know what, answering that email will take you right out of the zone that you just spent the last three hours chasing. Far better to let Jenkins notify you via a different route. To help keep a level of commonality between the various instant messaging plugins (i.e. the Jabber or the IRC plugins), the Instant Messaging plugin provides a common API and UX for reuse by instant messaging plugins.

So, the short story is that this is an enabling plugin with no real user-visible functionality, but if you are wondering what this plugin is doing on your Jenkins instance, it is providing some of the core functionality used by the JabberIRC, etc. plugins.

Stable Release Versions
The latest release is 1.21 which was released in November 2011 and has no known problems.

Requirements for Plugin-Use
Jenkins 1.392 or newer.

Step-by-Step Instructions on How to Use the Instant Messaging Plugin

Just install one of the plugins that depend on this plugin (i.e. the Jabber or the IRC plugin) and Jenkins will automatically download and install this plugin.

Nothing to configure specifically for the Instant Messaging plugin. The plugins that depend on the Instant Messaging plugin provide their own configuration options using some of the core functionality provided by this plugin.  


“Nothing to see here, move along now please!”

Well, ok, there are a number of common features that dependent plugins expose.

You can choose when to send build notifications: 
  • every build (a.k.a. all); 
  • every failure (a.k.a. failure); 
  • every failure and when first fixed (a.k.a. failure and fixed); or 
  • every time the build status changes (a.k.a. change)
You can choose who to notify: 
  • people who committed a change that caused the build to transition from stable to failed/unstable (a.k.a broken); 
  • people who committed a change to the project since the build transitioned from stable to failed/unstable (a.k.a. culprits); 
  • people who committed a change that caused the build to transition from failed/unstable to stable (a.k.a. fixers); 
  • people who committed a change to a job where the job's artifacts have been fingerprinted as used in this job (a.k.a. upstream committers
Tips & Tricks
  • You can control various features of Jenkins jobs by interacting with the bot provided by the Instant Messaging plugin (and exposed by one of its dependent plugins). You give the bot a command by either addressing it in a chat room or by sending it a private message which includes the command prefix.

    For example, if the command prefix is ! then to schedule a new build of the “Super Whizzo” job, you would send the bot an instant message like

    !build 'Super Whizzo'

    You can find out what the bot can do with the


Known Issues
  • If you allow builds of the same job to run in parallel, this plugin will force subsequent builds to wait for previous builds to complete, as it needs to know the result of the previous build before it can notify the result of a build.

    This is only really an issue if your build execution time can vary wildly and you have push notification enabled. For example, developer Joe commits a change triggering build #367 and 10 seconds later developer Mic commits a change triggering build #368. With parallel execution of builds in a job, build #367 triggered by Joe could end up running on a slower slave than the build #368, such that build #368 is ready to notify before build #367... but part of the notification relies on the status of build #367, so that build #368 will not be able to finish until build #367 finishes.
Relevant Documentation
Elite Developer and Architect
Follow CloudBees:
Facebook Twitter

Friday, March 16, 2012

CloudBees Platform: Best Performers

Whenever an application is uploaded to the CloudBees Platform as a Service (PaaS), it is not just blindly copied from your desktop onto the PaaS. Instead, we perform some smart processing so that only the delta from the previous upload needs to be sent, which significantly reduces the bandwidth and time required to upload a new version of your application.

Through that process, we anonymously capture some statistics about what’s being uploaded. To that end, we are using some package filter rules to identify particular frameworks and languages. Obviously, if a specific framework is not in the rule set, it will not be identified. To date, our rule set has been able to identify known frameworks/languages in 36% of the applications, so there are certainly improvements we could make. (If there is interest, we could make the ruleset available as a public Git repo so it can be further enhanced by specific framework/language communities.)


First surprise, ANT is still very much used as a build tool for the apps deployed to CloudBees:

If we had been able to analyze the content of more applications, would the result have been different? Possibly, but this result was very surprising to me given the notoriety enjoyed by Maven, including in our mailing lists.


In terms of libraries, I’m listing here the top 20 we’ve identified. Obviously they are not mutually exclusive (i.e. you could use log4j, Hibernate and Spring in the same application!) and some libraries also come with their own implicit dependencies:

Languages and frameworks

We also looked at what type of JVM-based languages and frameworks were being run on the platform and here are the results:

I do not find those numbers particularly high. It might be interesting, in a later post, to remove the “sample apps” that new subscribers can easily deploy as they might impact those numbers for no good reason.

Note: we might be missing a rule in our rule set since Lift apps should bring a Scala dependency.

Various Statistics

We can also compute some other statistics which don’t necessarily add much in terms of comparison but which can be interesting nevertheless. Here are some of them:
  • The application that has the most JARs contains … 353 JARs
  • The application that has been active the longest on the platform is more than 1,100 days old (it means they just passed their 3 years mark!) , with a few older than 1,000 days
  • The application with the longest name has … 58 characters :)
Let us know if there are any other stats you’d like to see!


Sacha Labourey, CEO
Follow CloudBees:
Facebook Twitter

Thursday, March 15, 2012

Webinar Recap: Exploiting the Cloud for Speedy Development & Continuous Delivery

A guest post from Sohini Kachhi, Online Marketing Manager at Codesion Cloud Services... 
CollabNet and CloudBees partner together to provide an Agile Best Practices webinar following the announcement of their partnership. This webinar shows how you can develop and deploy in the cloud, improve efficiencies and delivery times, reducing total overall cost of delivery applications.

Our presenters were Willie Wang, CollabNet VP of Products & Engineering, Steven Harris, CloudBees Senior VP of Products, and Harpreet Singh, CloudBees Senior Director of Product Management.

Below is a list of all the questions asked by our attendees. Feel free to email Codesion or CloudBees if you have any further questions.

CloudBees webinar image

Q: What are the different ways Jenkins can notify people when issues arise?
A: Jenkins can notify people of issues by e-mail, chat, and other channels. It supports a variety of protocols and transports so you can look into notifications by yourself. Likely, though, you will find a plugin that suits your needs within the “Manage Plugins” area of the Jenkins Update Center under “Build Notifiers.” In addition, Jenkins has built-in mechanisms for getting notifications to the right people at the right time. Too many notifications reduce the likelihood people will pay attention, and a release manager will have different levels of concerns, like promotions failing, than individual developers, who often need fast feedback on the impact of their work in cross-functional areas.

Q: Does Codesion offer Jenkins CI as part of their cloud service package?
A: Codesion currently does not offer a packaged CI service. However, you can sign up with CloudBees Jenkins as a Service. It works well with Codesion.

Q: For a small shop, which CloudBees Jenkins option is the most cost effective -- e.g., is there a free option?
A: Of course! We offer a free level of service for everyone, so you can get your hands on all aspects of the CloudBees offering, try it out and see how it works for you. You can upgrade to a paid subscription when you’re ready, or when you need a specific capability or quality of service. We also have a FOSS program that we have set up to help open source developers use the service for their projects.

Q: How do you address code security and confidentiality in the cloud?
A: CollabNet Cloud Services offers various solutions for code security in the cloud. First, our data centers are SAS 70 Compliant and all communications to our servers are via HTTPS. If a customer has security requirements that prevent the use of a shared, multi-tenanted infrastructure, then we can offer single tenancy where a customer’s code is stored on a dedicated server, not on a shared server. In addition, disk level encryption is also an option via our Enterprise Private hosting.

Q: I thought you guys would cover ALM software like ScrumworksPro or TeamForge. Could you provide some guidance on how to handle PBI and task dependencies?
A: ScrumWorksPro has tasks to PBI dependencies. TeamForge has even more flexible dependencies where any tracker item (defects, user story, tasks … etc.) can have parent / child relationships with any other object. If you have specific scenarios that require help, please email and we can describe in more detail the business solution that you are looking for.

Q: What is Jenkins vs. TeamForge? Is it competing software?
A: Jenkins is a Continuous Integration server, TeamForge is an ALM (Application Lifecycle Management) platform that offers tracker, document management, SCM, Wikis, Discussions and other functionality for Collaborative Development. Therefore, they are complementary and not competitive. In fact, TeamForge has existing Jenkins plugins that work seamlessly between TeamForge and Jenkins.

Q: Are there any plugins for Netbeans IDE? Is it possible to integrate CloudBees Jenkins with Netbeans?
A: Not today, sorry. We love NetBeans, but we do not have a plugin for it yet. You can use the CloudBees SDK quite easily alongside your NetBeans IDE to interact with the full CloudBees platform, though.

Q: Do you need to signup with Codesion and CloudBees individually to use continuous integration and continuous deployment services?
A: No, that is why we have partnered together. If you sign up with CloudBees, you can add both Jenkins and Codesion without having to sign up separately.

Q: Do you plan to integrate Gerrit (or other code review tools) with Git?
A: Within the next few months, TeamForge will have integration with Git and Gerrit for code review. This will be available for on-premise or enterprise private hosting of TeamForge. However, this will not be available for Codesion TeamForge project in the public cloud.

Q: What’s the Eclipse plugin we need to have?
A: You can find it in the Eclipse Marketplace. From Eclipse, look under Help -> Eclipse Marketplace, and search for “CloudBees” to locate the CloudBees Toolkit for Eclipse.

Q: How do you automate your CI from a source code repository like Git or SVN? How do you configure it in Jenkins basically?
A: Like all-things-Jenkins, a good place to start is the Jenkins Update Center console. Starting at the top-level, you choose “Manage Jenkins.” From there you can choose “Manage Plugins.” There are many plugins for source code control systems such as SVN, Git, GitHub, Perforce and TeamForge, grouped under “External Site/Tool Integrations.” When you install a plugin, additional configuration UI specific to that plugin is made available within the “Manage Jenkins” screen.

Feel free to email CollabNet Codesion at or CloudBees at if you have any questions or comments. 

Follow CloudBees:
Facebook Twitter

Wednesday, March 14, 2012

Erlang at CloudBees

Michael Neale has previously talked about the reliability aspects of Erlang at OSDC 2011.

As a system grows over time, the chance of it collecting esoterica increases - if there isn't a "law" that says this - there should be !

At CloudBees we use a wide variety of tools to get things done, one of the more interesting ones which has served us well is Erlang.

Erlang was developed initially in the 80s: inspired by logic programming, parallel programming and with a clear aim of making non-stop reliable "carrier grade" systems for telcos.

To this day it is quite widely used to good effect, and has a growing community. Its resurgence in popularity in recent years was sparked by growth of multi core CPUs, but the real strength of Erlang is in reliable systems: this is often why people are "discovering" uses for it today.

At CloudBees we use it in a few places:
  • Agents: little semi-autonomous agents that look after what is running on a server
  • Taskmaster: a service for managing long-running tasks and retries (rate limiting, throttling, etc.)
  • Autoscale: track sliding windows of statistics, trigger scaling events
  • DNA: tracks "definitions" of servers - single source of truth for configuration
We also make use of some great tools that happen to use Erlang: RabbitMQ and CouchDB for Chef.

Coming up very soon our very own Garrett will be demonstrating his "Erlang powered X-Ray vision" by speaking at the Erlang Factory in San Francisco.

Give it a try!
Michael Neale, Elite Developer and Architect
Follow CloudBees:
Facebook Twitter

Tuesday, March 13, 2012

Come join us on “Selenium, Jenkins, Robots, Oh My!” tomorrow

I'll be speaking tomorrow at the San Francisco Selenium Meetup. The topic is about Jenkins & Selenium — mainly recent improvements in the Selenium plugin, as well as several other new plugins relevant in the combination of Jenkins and Selenium, complete with a demo. I've got a couple of pet-peeves against the Selenium project, so I'm going to pitch them there to see the reaction, too.

I've been told that Jason Huggins from Sauce Labs is going to pick up where he left off in the last Jenkins User Conference to talk about his robot, and Theo Cincotta from Eventbrite will give the case study of how Eventbrite uses Jenkins & Selenium together internally. So the whole thing should be a great mix of fun & useful topics, all packed in a Wednesday night from 6:30pm to 8:00pm, with beer and food!

The event is free, but you do need to RSVP, instead of the usual RSVP in the San Fran Selenium meetup group page at (which currently says 209 people coming, when the EventBrite RSVP page says the capacity is 100 people — so I need to check with the organizers to make sure they know what they are expecting...)

- Kohsuke Kawaguchi
Founder, Jenkins

Follow CloudBees:
Facebook Twitter