CI Tools and Best Practices in the Cloud

Continuous Integration

Subscribe to Continuous Integration: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Continuous Integration: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

Top Stories

Simula Labs announced the availability of a complete hosted distribution delivery platform for complimentary open source technologies with the Community-oriented Real-time Engineering (CoRE) Network. The CoRE Network is the first delivery platform to offer enterprise IT a comprehensive framework for successfully adopting open source projects and processes through its hosted service, support and artifact repository platform. Simula Labs was conceived to accelerate open source adoption rates, by identifying and then building open source companies in key infrastructure market segments. Simula Labs’ CoRE Network naturally evolves this strategy, by providing a robust, community-oriented marketplace that gives enterprises a complete roadmap for adopting, managing and leveraging open source technologies from leading open source partner companies, including Covalent T... (more)

How To Deploy Scalable WebSphere Applications Using "Maven" Build Tool

When people talk about scalability, they are usually referring to how well an application performs with an ever-increasing load. Another type of scalability that needs attention during an application's life cycle is build scalability, or how well an application's build and deployment scales with ever-increasing complexity and components. Maven is a build tool from Apache that addresses build scalability. Maven uses simple project descriptors and a highly extensible and open architecture to build, deploy, and release application components. Through project descriptors, new components can be added to an application's build with little effort from a developer. Once added, Maven determines the component's placement in the application build order through its dependencies, and builds, deploys, and releases the new component and application bundle accordingly. This articl... (more)

Automatic Integration with CruiseControl.NET, NAnt, and NUnit

One of the most important and yet overlooked aspects of a software development project is the concept of regression testing during implementation. Regression testing is the practice of running tests for previously tested code following modification to ensure that faults have not been introduced or uncovered as a result of the changes made. In this article I will outline the need for continuous integration, automated builds, and testing, which support the tenets of regression testing and provide automation for the process. I will also introduce some of the free open source tools that can be used to effectively employ a continuous integration process, and we'll take a look at a scenario that demonstrates their use. The Case for Continuous Integration If you are a project manager, lead developer, or perhaps a tester on a software development project you may have heard t... (more)

Maven: A Different Way of Looking at Software Development

Software development is typically carried out in an opaque environment where progress can be slow and (too often) the resulting build processes lack visibility, transparency, and collaboration. The Apache Software Foundation's Maven project approaches the problem of building software by providing the technical underpinnings for a set of development methods that enable engineers and other stakeholders in a project to optimize build reliability, accelerate build velocity, and capture and share build knowledge. Maven differs from current script-based approaches to building software by first defining, standardizing, and then publishing the build process as a logically organized structured lifecycle. Having evolved from the Open Source development world of distributed, asynchronous, iterative, and highly component-based engineering, Maven's technology helps development t... (more)

An Introduction to Maven - Part III

In the parts 1 and 2 of this article, we demonstrated how to download and install Maven 2, how to install the Maven 2 plugin for Eclipse, and how to go about setting up a project directory structure using Maven 2. We used a simple use case for displaying employee details on the Web given an employee ID, but deliberately made the design a bit complex by introducing design concepts such as XML binding, EJBs, and JCA connectors to illustrate a few of the many features offered by Maven. In this final installment of the article, we continue with the remaining modules in our example and illustrate a few more developmental tasks that can be accomplished fairly easily using Maven that otherwise would demand significant time and effort to accomplish. As described earlier, the 'connector' module yields a RAR artifact containing a JCA connector that uses 'xmlBinding' classes to... (more)

Managing an Open Source Project for DotNetNuke

In December 2004 it was decided that DotNetNuke would break out its existing core modules into separate Projects so that they could be enhanced, released, and supported independently from the core Web Application Framework. It was further decided that some additional modules would also be added as official Projects to provide an increased level of richness to the platform. The first modules that we determined were going to be added were the TTT Forum and TTT Gallery, authored by Tam Tran Minh of TTT Corporation. I was already working closely with Tam on these modules, and I volunteered to co-lead the development of these Projects and to help morph them into modules that take full advantage of the DotNetNuke Web Application Framework. When the projects were first starting, the current DotNetNuke framework was in a transition. This transition included breaking changes ... (more)

An Introduction to Maven - Part I

Maven is a promising application development lifecycle management framework coming from Apache's armory of open source tools. Maven was originally developed as a framework to manage and mitigate the complexities of building the Jakarta Turbine project and soon became a core entity of the Apache Software Foundation project. Without a uniform application development lifecycle management framework, different development teams would create their own build frameworks with varying flavors and complexity and this tendency would only proliferate as more and more new projects get developed. The creation of different build approaches for different projects would lead to build system disparity lacking reuse of build logic that would impede developers in moving easily between the projects because every time a developer starts working on a different project, the developer would... (more)

Advanced Ant for Adobe Flex Projects

Why Ant? Typically, Flex developers use Flex Builder IDE, but Adobe also offers free Flex SDK, and  you should know how to build your applications without Flex Builder, and here’s why: •    There is no simple way to share all your project settings (including absolute source paths) with another user. •    If your project consists of many subprojects (some library projects, server side J2EE code) you may need to build each project in different IDEs, in a specific order. •    At the time of this writing, there is no Flex Builder for Linux and only beta version for Macs exists. What about cross-platform? •    And finally, Flex Builder costs money. If you came from the Java world you knew the answer: projects could be built with Apache Ant tool. But if you used to be a Flash developer, you entirely depended on Flash IDE, binary .fla files and nightmar... (more)

Put Your Next Project on Cruise Control

This article is the first in a three-part series on the use of CruiseControl.NET, a very popular and important tool for any development house interested in implementing continuous integration and other agile programming concepts. In this first installment we'll briefly cover the definition and use of continuous integration (CI), some of the other CI tools available, and the basic setup and operation of CruiseControl.NET. While these articles will cover the core elements of CruiseControl.NET, we will be covering only a small portion of its functionality and you are encouraged to read through the excellent online documentation. So What Is Continuous Integration? In brief, it's the process of integrating the various components of a software project on a regular and frequent basis to enable early detection of problems along component boundaries. For a much better read on... (more)

Setting Up a Java Shop: How To Build Better Software Faster

Three times in recent years I've joined an organization that was relatively new to Java development and missing some basic infrastructure elements that I'd relied on in previous development efforts. These elements include utility classes, standards and conventions, and build and quality control tools that help you produce a higher quality product with less risk. If you're involved in a development effort, whether it's new or ongoing, that's lacking any of these elements, you should consider incorporating them into your project infrastructure. Nuts and Bolts Some common utility software components should be incorporated into your development efforts as early as possible, because delaying their introduction may result in the proliferation of differing approaches that will need to be reworked later. Configuration Settings Access configuration settings via wrappers that... (more)

Automating Your Processes - an NAnt Case Study

Automating processes is critical to the success of any software project. Because computers can perform redundant tasks faster and more reliably than people, automation becomes more necessary as the processes become larger and more complicated. This is one of the main drivers behind Test Driven Development - constantly rerunning an automated build with Unit Tests. This article will provide techniques to affectively automate large processes, with a case study using NAnt. Figure 1 shows a simple process with four tasks and various flow controls. This illustrates how a process has two parts: the tasks that do work, and the scripting that connects those tasks. Automating a process requires automating both the tasks and the scripts. For ease of explanation we'll first illustrate scripting techniques with .NET, and then show how to call almost any task from the command li... (more)