Submitted by kohsuke on Fri, 2014-04-04 09:20
I recently had an opportunity to visit a big Jenkins user on site, and one of the things they've told me is that building projects in the Maven job type is substantially slower than doing the same with the freestyle project type.
This is partly expected, because this job type does more for you. For example, it automatically archives your build artifacts, fingerprints all the relevant information, and so on. These are good things, and naturally, it cost time.
But the slow down they are seeing was substantial, and this is a complaint I've heard from others as well. So I started looking into it.
With a help of artificial delay induced to my network interface and several custom scripts to probe into the running processes, I was able to understand what was going on and make some good improvements.
(This is a guest post by Stephen Connolly)
Every developer, at some stage, will be handed a project to maintain that somebody else was responsible for. If you are lucky, the developer will not have left the organization yet and you get a brief Knowledge Transfer as the developer packs up their desk before heading on to their new job. If you are unlucky, you don't even get given the details of where the source code is hiding.
Now begins the detective work, as you try to figure out how to build and release the project, set up Jenkins jobs to build the project and run the tests…
It doesn't have to be this way, you know!
What if I told you there was a file sitting at the top level that told you exactly how to build the project and do the important things? You'd be interested, wouldn't you?
When I tell you it's the README file? “But that's all lies. Nobody keeps that up to date. Argh!!!”
But what if Jenkins reads the README file and uses it for the build definition? Now you not only have a CI system ensuring that the build definition is correct, but you have less work to do setting up the job.
What if, because the build definition is now in Source Control, you can have Jenkins create jobs for each branch with ease?
Lately there has been several cases where we wanted to deliver beta versions of the new plugins to interested users.
To simplify this, we have created a new "experimental" update center, where alpha and beta releases of plugins will be available. Users who are interested in downloading them can go to "Plugin Manager", then to the "advanced" tab, and type in http://updates.jenkins-ci.org/experimental/update-center.json in the update center URL field.
When you are looking for the "available" tab, plugins that are experimental are marked accordingly to help you decide which ones to install. Once you install the beta plugins that you wanted, you can switch back to the default http://updates.jenkins-ci.org/update-center.json update center.
If you are developing plugins and you want to distribute experimental plugins, all you have to do is to put "alpha" or "beta" in the version number of pom.xml. The backend infrastructure takes care of the rest.
This is a guest post by Mike Rowan, VP R&D at SendGrid.
Q: Tell us a bit about what your service and plugin do. Who is it for? What are the highlights of your plugin?
A: Loader.io is a simple-to-use cloud-based load testing service. The service is designed for developers and people who need to ensure applications are performing as they should. It allows developers to perform large-scale load tests on demand, which lets them understand the scalability and performance of their applications. We realize Jenkins is the preferred build service for a lot of our users, and we know providing a way for them to implement, measure and improve application performance during the continuous build cycle is important. So we wrote a Jenkins plugin that allows load testing to be brought into the continuous build and deployment process with ease.
Q: Did you have to convince your boss/lawyers to open-source your plugin? What was the pitch?