Skip to content

Open Source

The SonarQube COBOL Plugin Tracks Sneaky Bugs in Conditions

Sonar - Thu, 05/21/2015 - 13:28

Not long ago, I wrote that COBOL is not a dead language and there are still billions lines of COBOL code in production today. At COBOL’s inception back in 1959, the goal was to provide something close to natural language so that even business analysts could read the code. As a side effect, the language is really, really verbose. Each time a ruby, python or scala developer complains about the verbosity of Java, C# or C++, he should have a look at a COBOL program to see how much worse it could be :). Moreover, since there is no concept of a local variable in COBOL, the ability to factorize common pieces of code in PARAGRAPHS or SECTIONS is limited. In the end, the temptation to duplicate logic is strong. When you combine those two flaws: verbosity and duplicated logic, guess what the consequence is: it’s pretty easy in COBOL to inject bugs in conditions.

Let’s take some examples we’ve found in production code:

Inconsistencies between nesting and nested IF statements

In the following piece of code the condition of the second nested IF statement is always TRUE. Indeed, when starting evaluation of the nested condition, we already know that the value of ZS-LPWN-IDC-WTR-EMP is ‘X’ so by definition this is TRUE: ZS-LPWN-IDC-WTR-EMP NOT EQUAL 'N' AND 'O'. What was the intent of the developer here? Who knows?

And what about the next one? The second condition in this example is by definition always TRUE since the nesting ELSE block is executed if and only if KST-RETCODE is not equal to ’02′ and ’13′:

Inconsistencies in the same condition

In the following piece of code and in the same condition we’re asking ZS-RPACCNT-NB-TRX to be both equal to 1 and 0. Obviously Quantum Theory is not relevant in COBOL, and a data item can’t have two values at the same time.

The next example is pretty similar, except that here it is “just” a sub part of the condition which is always TRUE: (ZS-BLTRS-KY-GRP NOT = 'IH' OR ZS-BLTRS-KY-GRP NOT = 'IN'). We can probably assume that this was not what the developer wanted to code.

Inconsistencies due to the format of data items

What’s the issue with the next very basic condition?

ZS-RB-TCM-WD-PDN cannot be greater than 9 since it’s declared as a single-digit number:

With version 2.6 of the COBOL plugin, you can track all these kinds of bugs in your COBOL source code. So let’s start hunting them to make your COBOL application even more reliable!

Categories: Open Source

JUC Speaker Blog Series: David Dang, JUC U.S. East

I’ve implemented numerous test automation projects for clients, but recently I had a unique request. Jenkins plays a critical role.

The “digital channel” is an industry buzzword for many companies these days. The digital channel represents a company’s content that is delivered by websites and mobile devices. Companies want the same website to work across any channel in multiple browsers and different operating systems. They also want that same website to work across an explosion of mobile devices. Add the new generation of smart watches showing up and testing is becoming a huge challenge for IT departments. One big issue is there is too much duplication of testing efforts.

In a perfect world, you would create a core set of test automation scripts that work across all digital channels. A client recently requested that my team and I create this perfect-world scenario, and we are doing just that. Jenkins pulls it all together by managing the execution and reporting.

Join me for my talk to learn how I’m using Jenkins, Selenium, TestNG, and Perfecto Mobile to solve the digital channel testing challenges for one client.

This post is by David Dang, VP of Automation Solutions at Zenergy Technologies. If you have your ticket to JUC U.S. East, you can attend his talk "Integrating Mobile Automation with Jenkins: A Case Study Using Perfecto Mobile with Jenkins" on Day 1.

Still need your ticket to JUC? Early bird pricing has been extended! Also, if you register with a friend you can get 2 tickets for the price of 1! Register here for a JUC near you.

Categories: Open Source

Insights – Get to know your fakes part 5- Base

The Typemock Insider Blog - Wed, 05/20/2015 - 13:42

This is part 5 of a series of post about the new Insights feature in Typemock Isolator 8.1 To start Insights – either debug your test or turn on the Insights (Typemock->Windows->Typemock Insight and click the on/off button) In Isolator 8.1 we introduced base method faking, this is also shown in Insight When a base […]

The post Insights – Get to know your fakes part 5- Base appeared first on The Unit Testing Blog - Typemock.

Categories: Open Source

JUC Speaker Blog Series: Andrew Bayer, JUC Europe

In the fall of 2011, the very first Jenkins User Conference was held in San Francisco. Over 250 people showed up. It was, to be completely honest, a bit shocking to me - that little project I’d gotten involved with less than three years earlier was big enough, interesting enough, important enough for 250 people to travel from around the world to spend a day talking about it? That’s an amazing feeling, and it was an amazing day. Since then, there’ve been three more JUCs in the Bay Area, three in Israel and two in Europe, with more talks on more Jenkins subjects and an ever-increasing number of attendees. This year, there are another four scheduled - three of them for two days each this time! Find out more about the first two, JUC US East and JUC Europe, below!

Not only are there enough worthy talks to merit a full day a few times a year - now there are enough to merit two days! At JUC US East 2015 outside Washington, DC on June 18 and 19, you can see talks on the Workflow plugin for Jenkins, test automation, mobile testing, plugin development, and a few talks on new and fascinating ways people are using Jenkins - even driving big data workflows! And then, just a few days later, on June 23 and 24 in London, there’s JUC Europe 2015, with talks covering things like the fantastic Job DSL plugin, reproducible build environments, Jenkins and Docker together, and my personal favorite, the 2015 edition of my Seven Habits of Highly Effective Jenkins Users talk.

Whether you’re interested in the latest innovations in continuous integration and delivery, or you’re a Jenkins plugin developer wanting to learn how to make your plugins more mature and useful, or you’re a Jenkins administrator trying to understand how to provide your users with a great platform for their builds and testing, or even if you’ve just heard about CI/CD and you want to find out more, the Jenkins User Conferences are a great opportunity to see all those things and meet with other Jenkins users and developers. I’m excited to attend my fifth JUC in London, and I hope to see you there!

This post is by Andrew Bayer, build and tools architect at Cloudera and longtime Jenkins contributor. If you have your ticket to JUC Europe, you can attend his talk "Seven Habits of Highly Effective Jenkins Users" on Day 1.

Still need your ticket to JUC? Early bird pricing ends May 15. Also, if you register with a friend you can get 2 tickets for the price of 1! Register here for a JUC near you.

Categories: Open Source

Insights – Get to know your fakes part 4- Pointers

The Typemock Insider Blog - Mon, 05/18/2015 - 09:25

This is part 4 of a series of post about the new Insights feature in Typemock Isolator 8.1 To start Insights – either debug your test or turn on the Insights (Typemock->Windows->Typemock Insight and click the on/off button) Insight will give you pointer to understand your fakes: Run on different thread than setup. Recursive Fake […]

The post Insights – Get to know your fakes part 4- Pointers appeared first on The Unit Testing Blog - Typemock.

Categories: Open Source

JUC Speaker Blog Series: Lorelei McCollum, JUC U.S. East

Have you heard Jenkins mentioned, but haven't really done much with it? Are you at JUC because you want to learn more? Has your company been pushing you to use Jenkins or to adapt a more agile build/test process using a Continuous Delivery/Continuous Integration method?

Jenkins 101 is going to give you an introduction to Jenkins and get you started in the right direction. Many sessions may be too in-depth, too specialized, or do a deep dive too fast, and while that is good for the more intermediate Jenkins user, the beginner can get lost fast and lose interest. My session will go through the basics of Jenkins, so anyone without prior knowledge can get up and running in just a short amount of time. We will cover building/configuring jobs, design of pipelines, security of your Jenkins master, fun groovy scripts and useful plugins to get you started. Whether you are a beginner or an advanced Jenkins user, you can always learn from how others are using Jenkins. Attend this session early on in your JUC lineup, so that you get the most out of the conference!

This post is by Lorelei McCollum, Software Engineer at IBM. If you have your ticket to JUC U.S. East, you can attend her talk "Jenkins 101" on Day 1.

Still need your ticket to JUC? Early bird pricing ends May 15. Also, if you register with a friend you can get 2 tickets for the price of 1! Register here for a JUC near you.

Categories: Open Source

Selenium Conf 2015 – Save The Date

Selenium - Wed, 05/13/2015 - 18:23

Selenium Conf is coming to Portland, Oregon this year!

It will be happening on September 8, 9, and 10. Mark your calendars.

Stay tuned for details!


Categories: Open Source

Insights – Get to know your fakes part 3- Warnings

The Typemock Insider Blog - Tue, 05/12/2015 - 14:21

This is part 3 of a series of posts about the new Insights feature in Typemock Isolator 8.1 To Start insights – either debug your test or turn on the Insights (Typemock->Windows->Typemock Insight and click the on/off button) Insight will tell you about misuses that can affect your tests Isolated attribute missing. Setups in ClassInitialize […]

The post Insights – Get to know your fakes part 3- Warnings appeared first on The Unit Testing Blog - Typemock.

Categories: Open Source

SonarQube User Conference in Paris

Sonar - Mon, 05/11/2015 - 12:12

We are very happy to announce that we are organizing our first Paris SonarQube User Conference, on June 10, 2015 from 9:30 a.m. until 2 p.m. at the Salons de l’Aéro-Club, 6 Rue Galilée in the 16th arrondissement.

This conference offers a great opportunity to meet other members of the community and compare notes on your experiences with the platform. We’ll also discuss new features, and the platform road map. We’re expecting many members of the community, including speakers from our global customer base and partners, and of course the SonarSource Team. We are expecting heated debate around the adoption and perspectives for SonarQube, as well as some insights on the paradigm shift in managing Technical Debt!

The program will also feature talks from Jean-Louis Letouzey (www.sqale.org) on understanding and leveraging the SQALE methodology, and Jean-Marc Prieur from Microsoft (http://blogs.msdn.com/b/jmprieur/) on the integration with Visual Studio & TFS.

To register for the event, simply send an email to kristi.karu At sonarsource.com. We are looking forward to meeting you there!

Categories: Open Source

Insights – Get to know your fakes part 2- Different Behaviors

The Typemock Insider Blog - Sun, 05/10/2015 - 09:25

This is part 2 of a series of post about the new Insights feature in Typemock Isolator 8.1 To Start insights – either debug your test or turn on the Insights (Typemock->Windows->Typemock Insight and click the on/off button) Insights shows different behaviors Original – Call Original Method Faked – Don’t Call the Original Method – […]

The post Insights – Get to know your fakes part 2- Different Behaviors appeared first on The Unit Testing Blog - Typemock.

Categories: Open Source

JUC Speaker Blog Series: Denis Chernilevskiy, JUC Europe

Jenkins is a great tool for automation of all kinds of processes in the software development cycle. Falling back to the year 2008 I remember myself creating my first job and the feeling of enlightenment flowing through my veins :) Then it was just one script running on just one slave (node) and it was enough for that particular task. But years have passed, software systems have become more complicated and terms like «cloud», «distributed environment», «CI/CD» are not a discovery for anyone nowadays. But how can these things be connected and used by Jenkins? The detailed answer for this question will be revealed in my presentation of "compound-cloud" plugin at JUC Europe 2015.

Before I got to Yandex, the QA's automation concept was the following:

  • The job takes 1 free slave
  • The job installs the system under test and tests themselves to this node
  • The job runs tests
  • The job cleans-up and returns the slave back to the pool

When I started working for Yandex I understood that the concept of one single slave for a job is not a solution for our tasks because of one particular reason - the system under test was not able to work on a single node… This system is a Yandex MediaAd platform and it requires at least 4 separate nodes to be run on. Better - 8 nodes. Optimal - 40 nodes :)

Thinking about the problem, we thought we would get closer to the solution by simply using a single Jenkins slave as a launchpad for tests and for some tools which will then get some more nodes from the cloud (we already had OpenStack ready) and deploy the system inside them. Thank God we haven’t implemented this solution :)

We’ve been stopped by the following reasons:

  • We are lazy and want to write as little code as possible :)
  • There’s a JClouds plugin that can work with OpenStack. Why don’t we use it? 'Cause it provisions only 1 slave per job. But it has provisioning algorithms implemented already, and we don’t want to reimplement them…
  • If we create cloud instances with a separate tool, then we have to manage them separately and can’t get profit of using Jenkins’ slave management, which is also implemented already…
  • if we do so, we also lose Jenkins’ slave features like running a script on the slave, get some reports or statistics and so on
  • We would also lose visibility: how many slaves we have, how many are busy, how many left til we get to the cloud quota limit? We could go to OpenStack panel then, but it’s totally inconvenient…

As a result of this reasoning, the idea emerged! «We should provide an ability to either attach several slaves to a job, or to allow a slave to consist of several nodes». The second way seemed to give more order in slaves management and it was stated to be a final solution for our problem. We called this concept a «compound-slave». And then we coded...

That’s how the compound-cloud plugin was born. It allows us to get such compound-slaves from any cloud plugin installed to Jenkins. Of course there’s also a possibility to form a compound slave from single slaves already attached to Jenkins, but it’s not the true way for hardcore IT guys ;)

Of course there are lots of details on how we use this concept in a real life for our purposes (and I will surely describe the main parts of them in my speech), but here’s a short list of common use-cases:

  • We configure a set of labels via the JClouds plugin. Each label represents 1 slave template, like «small_ubuntu_server» or «large_win_server».
  • We then configure a compound-slave label via compound-сloud plugin. Each label is a set of single cloud labels. As a result we have a label like «Small test env» consisting of "1x large WinServer + 3x small Ubuntu».
  • We assign roles to each single node in a compound label, to be able to distinguish them, so the job can run a script on a particular node inside a compound-slave for example.
  • We assign a label to a job, like it’s done for a JClouds label, for example.
  • When the job starts, a compound-slave provisions from the cloud using the corresponding compound label.
  • We run a deployment tool on a ROOT role node of a compound-slave. It then deploys the system under test to other nodes inside this compound-slave.
  • We run tests.
  • We don’t bother with creating/cleaning/stopping/deleting slaves. It’s done by Jenkins.
  • We get profit :)

The core feature is that we've reused all the provisioning and management mechanisms already implemented in Jenkins and cloud plugins. We just run our jobs and don’t care about the distributed infrastructure!

This post is by Denis Chernilevskiy, the head of QA/DevOps Services at Yandex. If you have your ticket to JUC Europe, you can attend his talk "Multi-Node Environment as a Jenkins Slave (Compound-Slave)" on Day 2.

Still need your ticket to JUC? Early bird pricing ends May 15. Also, if you register with a friend you can get 2 tickets for the price of 1! Register here for a JUC near you.

Categories: Open Source

Insights – Get to know your fakes part 1- Tracking Calls

The Typemock Insider Blog - Tue, 05/05/2015 - 13:46

This is part 1 of a series of post about the new Insights feature in Typemock Isolator 8.1 To start Insights – either debug your test or turn Insights manually (Typemock->Windows->Typemock Insight and click the on/off button) The first thing you can get some insight on, is where your fakes are being called in your […]

The post Insights – Get to know your fakes part 1- Tracking Calls appeared first on The Unit Testing Blog - Typemock.

Categories: Open Source

Announcing SonarQube integration with MSBuild and Team Build

Sonar - Wed, 04/29/2015 - 00:20

This is a cross-post of Microsoft ALM web site.

Technical debt is the set of problems in a development effort that make forward progress on customer value inefficient. Technical debt saps productivity by making code hard to understand, fragile, difficult to validate, and creates unplanned work that blocks progress. Technical debt is insidious. It starts small and grows over time through rushed changes, lack of context and lack of discipline. Organizations often find that more than 50% of their capacity is sapped by technical debt.

SonarQube is an open source platform that is the de facto solution for understanding and managing technical debt.

Customers have been telling us and SonarSource, the company behind SonarQube, that the SonarQube analysis of .Net apps and integration with Microsoft build technologies needs to be considerably improved.

Over the past few months we have been collaborating with our friends from SonarSource and are pleased to make available a set of integration components that allow you to configure a Team Foundation Server (TFS) Build to connect to a SonarQube server and send the following data, which is gathered during a build under the governance of quality profiles and gates defined on the SonarQube server.

  • results of .Net and JavaScript code analysis
  • code clone analysis
  • code coverage data from tests
  • metrics for .Net and JavaScript

We have initially targeted TFS 2013 and above, so customers can try out these bits immediately with code and build definitions that they already have. We have tried using the above bits with builds in Visual Studio Online (VSO), using an on-premises build agent, but we have uncovered a bug around the discovery of code coverage data which we are working on resolving. When this is fixed we’ll send out an update on this blog. We are also working on integration with the next generation of build in VSO and TFS.

In addition, SonarSource have produced a set of .Net rules, written using the new Roslyn-based code analysis framework, and published them in two forms: a nuget package and a VSIX. With this set of rules, the analysis that is done as part of build can also be done live inside Visual Studio 2015, exploiting the new Visual Studio 2015 code analysis experience

The source code for the above has been made available at https://github.com/SonarSource, specifically:

We are also grateful to our ever-supportive ALM Rangers who have, in parallel, written a SonarQube Installation Guide, which explains how to set up a production ready SonarQube installation to be used in conjunction with Team Foundation Server 2013 to analyse .Net apps. This includes reference to the new integration components mentioned above.

This is only the start of our collaboration. We have lots of exciting ideas on our backlog, so watch this space.

As always, we’d appreciate your feedback on how you find the experience and ideas about how it could be improved to help you and your teams deliver higher quality and easier to maintain software more efficiently.

Categories: Open Source

JIRA migration this weekend

In continuing my infra upgrade work, this weekend I'll be migrating JIRA to another server.

This will make upgrade more manageable and testable. The service will be disrupted for a few hours. Check out our @jenkinsci on Twitter for up-to-the-minute status.

Once the migration is done, the next step is to upgrade them.

Categories: Open Source

SonarQube 5.1 in Screenshots

Sonar - Thu, 04/23/2015 - 07:32

The team is proud to announce the release of SonarQube 5.1, which includes many new features:

  • New issues page & improved issue management
  • New rules page
  • Improved layout and navigation
  • Simplified component Viewer
  • All text files in a project imported
  • Preview analysis timezone issue solved

New Issues Page & Improved Issue Management

Vast improvements in issue handling have gone into this version. First, there’s the replacement of the Issues Drilldown with the full power of the Issues page, contextualized to the current project.

Next are the long-awaited issue tags! Issues inherit tags from their rules, but the list is user-editable per issue.

Issue tags also come with a new widget, to show the distribution of issues in a project by tag:

Also on the long-awaited list is the ability to mark an issue “Won’t fix”. Choose that option from the dropdown and the issue disappears from issue counts and technical debt calculations at the next analysis.

Another key improvement is the automatic assignment of new issues to the last modifiers of the relevant lines. SonarQube user accounts are matched automatically to committers when possible, but it’s also possible to make those associations manually

And finally in the Issues Management area, the functionality of the Issues Report plugin has been moved into core, so you get those capabilities out of the box now.

New Rules Page

The Rules page has also made the final step in its transition. Its new page structure will be familiar from the Issues page, and Rules now features the same powerful and intuitive search facets.

When you’re in a Rule Profile context, inheritance is now clearly displayed in the results list, and it’s easy to toggle your search between what is and is not activated in the profile.

The rule detail has been enhanced too, most notably by the addition of linked issue counts for each rule.

Improved Layout and Navigation

The first thing you’ll notice is that you’ve got more horizontal space for content, because we’ve removed the blue navigation bar on the left.

Global navigation is in the top menu and a sub-menu has been added for navigation within a project:

The new top menu features a home icon on the left – the SonarQube logo by default – which can be customized with your own logo.

And by default, the search menu (keyboard shortcut: s) now starts with your recently-used items:

We’ve also made the help menu more obvious. You could see it before with the ‘?’ keyboard shortcut, but now there’s an icon too.

Simplified Component Viewer

The Component Viewer has been simplified in this version: there’s no more need to turn decorations on and off; it’s all on by default

And the “Show Details” option in the More Actions menu pulls up a display of all the file metrics.

All Text Files in a Project Imported

It’s now possible to import all the files in your project. This allows you to have a fuller view of your project in SonarQube and to create manual issues on those files.

Preview Analysis Timezone Issue Solved

And finally, the timezone problem that kept people in different timezones than their SonarQube servers from performing preview analysis has been fixed. There’s not much to show for this point, but it’s significant enough to many to deserve a mention here.

That’s All, Folks!

Time now to download the new version and try it out. But don’t forget that you’ll need Java 7 to run this version of the platform (you can still analyse Java 6 code), and don’t forget to read the installation or upgrade guide.

Categories: Open Source

Jenkins User Conference - Agenda News

I have some exciting news -- The agendas have been posted for the Jenkins User Conferences (JUC) to be held at U.S. East (Alexandria, VA) and Europe (London). Take a look here to learn more about the talks, speakers and schedules.

As always, there is a great lineup of presenters ready to share their Jenkins stories: Peter Vilim will be presenting “Proving a First Class User Experience with Jenkins” at the U.S. East JUC, and Sander Kieft’s talk is called “Automating a Big Data Platform with Jenkins” at JUC Europe. Learn more about all 2015 JUC speakers and talks here. Explore the pages and see the who/what/where of all JUC 2015 locations!

You will see some familiar names and talks as well: Andrew Bayer will be presenting his very popular talk called “Seven Habits of Highly Effective Jenkins Users” at JUC Europe. Will Soula is returning this year to JUC U.S. East to “chat” about “Chat Ops and Jenkins.” Lorelei McCollum is also back with two talks at JUC U.S. East called “Jenkins 101” and “Getting Groovy with Jenkins.”

This year, you will notice a few differences in the JUC agendas. JUC is now a two-day conference in the U.S. East, Europe and U.S. West locations! Also, each session is assigned a category according to its content: Continuous Delivery, Best Practices, Operations, Plugins, Case Studies/War Stories and more. This will help you decide which talks to attend. You will also notice that several talks, especially in JUC Europe, reflect the industry’s growing interest in big data and Docker.

The agendas are still being finalized for JUC Israel and JUC U.S. West. If you are interested in speaking at either of these locations, you can still send in your talk proposals. The U.S. West deadline is May 3 and the Israel deadline is May 15.

JUC is such a great opportunity for the community to come together and network face-to-face. You can meet Kohsuke Kawaguchi, creator of the Jenkins project, Gene Kim, author of The Phoenix Project and DevOps expert, but you will also have the opportunity to meet Jenkins users, just like you, from all over the world. And this year, with the Jenkins project at well over 100K active installations, JUC as a whole will be the largest gathering of Jenkins users ever.

Early bird pricing for JUC U.S. East and Europe ends May 1, so REGISTER NOW to take advantage of the lower pricing.

Categories: Open Source

JUC World Tour 2015 - Keynote Speaker News and Early Bird Tickets

The 2015 JUC World Tour dates are rapidly approaching. Since the community has grown so tremendously since last year, the JUC in each city will be the largest gathering of Jenkins users in that region.

Kohsuke will, as always, be the opening keynote speaker at each JUC. But, with the conference going from one to two days, I am happy to announce that Gene Kim will be another keynote on the second day! He is the author of The Phoenix Project and a thought leader in DevOps.

To have these two experts in one place will provide a great opportunity to talk about Jenkins as the foundation of continuous delivery and DevOps practices.

Another exciting announcement: the 2015 Jenkins World Tour will run alongside the CD Summit conferences for both days (at the U.S. East, Europe and U.S. West locations only). Attendees of either conference can attend any of the talks and presentations at both events. Learn more about what CD Summit 2014 was like to get an idea for this year's event.

Registration for all 2015 JUC locations is open. Early bird pricing ends May 1!

The Call for Papers for JUC is still open for Israel and U.S. West. Submit your own proposal or convince your favorite speaker/Jenkins user to submit one if speaking is not your thing!

Categories: Open Source

SonarQube User Conference – U.S. West (Santa Clara, CA)

Sonar - Wed, 04/08/2015 - 22:01

We are very happy to announce that the second SonarQube user conference will take place on April 27th at the Santa Clara Convention Center, in Santa Clara, California.

Following our East Coast tour in October of last year and the good feedback we received from it, we have decided to host another event, this time on the West Coast. This time the format will be slightly different, with two distinct sessions:

  1. An executive session in the morning covering major topics on our roadmap, as well as strategy, adoption, and results. This session is reserved to our customers.
  2. A more technical session in the afternoon, during which we will demonstrate the latest features, such as new integrations with Visual Studio and TFS, new bug detection features, issue filtering through Elastic Search… We will also discuss the challenges and future state of the SonarQube platform and Continuous Inspection as a practice.

We believe this is a unique chance for us to meet our users, and for you to provide feedback on the product and to hear where we are going, so we hope you’ll be able to join us.

There is still time to register but don’t wait too long; the seats are filling up fast! To reserve your seat, simply send an email to kristi.karu At sonarsource.com.

And if you can’t make it to California this spring, don’t worry. We’re planning a similar event this fall in Europe. Stay tuned for more details.

Categories: Open Source

Confluence migration this weekend

For the past few weeks, I've burnt a lot of midnight oil to get Confluence containerized. The goal is to make Confluence upgrade more manageable and testable. In the proces, I've not only containerized Confluence, but also containerized some other services, including mock LDAP server, to be able to test the copy of the production Confluence dataset against newer versions of Confluence before upgrading production.

The infra team is currently targeting this weekend to migrate our current Confluence instance to this new container, and use the opportunity to move the service to a bigger system. Currently JIRA and Confluence has to live within 2.5GB RAM from the same host, and it's really stretching both services. The new box has 4GB of RAM, and we are splitting JIRA and Confluence to two different servers. So there's a lot of head room.

So please expect some Wiki outage over the next weekend.

As always, our sincere thank you to Oregon State University Open Source Lab for generously hosting our servers. Please donate to them to show your support. Similarly, thank you Atlassian for generously providing the license for running Confluence.

If this goes well, JIRA will follow suit.

Categories: Open Source

Good bye Java6

About two years ago, we bumped our runtime JRE requirement from Java5 to Java6. And so the time has come once again for us to finally move on to Java7. Because of all the new language features, many of us the developers really wanted to move right on to Java8, but after much discussion we settled to move to Java7 first and then to Java8.

So here is the plan:

  • Starting Jenkins 1.608, we start advertising that we will be moving on to Java7, which is why you are reading this.
  • Starting Jenkins 1.610 (2 weeks from now), we will ship so-called 51.0 class files that will only load on Java7+. This gives some more warnings to those who don't read our blog.
  • Unless we hear uproar from users, starting around 1.614 (6 weeks from now), core developers will start linking directly to new Java7 APIs. We will move on to servlet 3.0 at this time as well.
  • The current 1.596 line of LTS will remain compatible with Java6, and most likely the next LTS line will also remain compatible with Java6. So LTS users have additional 3 months before upgrading to Java7.

Java7 has more NIO improvements that allow us to do some file I/O in more portable manner. Similarly, servlet 3.0 will help us build more interactive UI.

Your Jenkins master and all the build slaves need to be running on Java7+. Similarly, those who are using the Maven2 job type must also run Maven with Java7+. However, this does not prevent you from using Jenkins to build your applications that are targeted to earlier versions of Java. According to our research, most platforms people run Jenkins on has been already shipping Java7 for quite some time now. But if you have a good reason why we shouldn't force everyone to Java7, please let us know ASAP.

To put this into context, Oracle will not release updates to Java7 past April 2015. We have always recommended users to run the latest general release according to Oracle, which is currently Java8. As I said, I suspect we will be requiring Java8 pretty soon. So if you are still running Java6, you should definitely upgrade to Java8.

Categories: Open Source