InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Article: Where To Now With Build Automation

Posted by Dave West on May 15, 2009

Sections
Process & Practices,
Operations & Infrastructure
Topics
Agile Techniques ,
Agile ,
Architecture ,
Build systems
Tags
Best Practices ,
Deployment ,
Atlassian ,
Continuous Integration

This article, by John Smart of Atlassian, discusses four aspects of continuous integration and automated builds that offer the potential to increase the utility of these common agile practices.

An effective Continuous Integration environment can save your team time, money and even existential angst. It can enable bugs to be discovered earlier, their cause identified more easily, and ultimately get them resolved more efficiently. It can encourage better source code management practices, help you leverage automated analysis tools, encourage better testing, track your progress and remove bottlenecks from your developers lives. It can facilitate the deployment process, and make your releases go more smoothly and more reliably. Managers will have more charts than they know what to do with and developers will be happier. To put it another way, not using Continuous Integration is like developing software using Notepad, it's possible but it's horribly inefficient.

 

Continuous communication flow, effective build process, code quality, and automated deployment are the four issues covered in this article.

Read John Smart's Where To Now With Build Automation? - The Future of CI Best Practices, contributed by Atlassian Software, to better understand this topic.

Related Sponsor

In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!

Improving the compile and link process is key to improving CI Builds by tracy ragan Posted
Selective testing can also have significant impact on build efficiency by Ken Olofsen Posted
With an eye toward continuous communication flow... by Sean Blanton Posted
E-mail, IM and scripting tools by Daniel Sobral Posted
  1. Back to top

    Improving the compile and link process is key to improving CI Builds

    by tracy ragan

    Great explanation of how Continuous Integration is used for managing a workflow. But, that is not all that a CI process should do.

    The term "build" in this article describes workflow - not the compile and link process. To most developers a build is the process of converting source code into binaries. Then there are the pre and post steps around the build like check-out and testing. I call that the workflow component of CI.

    Builds are slow because the scripts that support the compile and link process are often times highly redundant, manual, out of sync with IDE builds, and not capable of running in an incremental mode. It is my experience that if you want to gain speed in your CI process, the lions share of the problem is in the time it takes for the compile and link process to execute. Improving the compile and link process allows for the "build" to support frequent agile iterations whereby only updated source code is re-compiled. This moves the 1 hour+ builds down to literally only a few minutes and also allows for the support of pre-commit or pre-flight builds.

    The ability to improve the compile and link process should be core to any continuous integration solution - after all the point is to "integrate" continuously and the only way that integration is done is if the application source code is compiled as a complete unit. Workflow is simply icing on the cake that supports the core activity of the software build.

  2. Back to top

    Selective testing can also have significant impact on build efficiency

    by Ken Olofsen

    I'm with Atlassian and it's worth noting that Clover also provides Test Optimization, or selective testing, which automatically determines which tests to run based on the code changes made for the particular build. This can provide significant time savings allowing build process to run more frequently, especially for functional test suites that often take much longer than unit tests.

  3. Back to top

    With an eye toward continuous communication flow...

    by Sean Blanton

    I'm glad to see the emphasis on communication and have been exploring that aspect as well.

    Text messaging and particularly Twitter-like tools provide a more direct, convenient and efficient means of notification. Here is that post: Build Management 2.0 - Messaging

  4. Back to top

    E-mail, IM and scripting tools

    by Daniel Sobral

    I'm deeply unconvinced about the arguments about IM. First, integration tests are slow, so the programmer is hardly waiting for these results. He is onto something else, so the gain of 10-15 minutes after the slow integration test is hardly relevant. Furthermore, if you need 10-15 minutes for an e-mail to propagate all the way to client, you have a deficient setup which should be fixed instead of being worked around. The same goes for mobile phones which don't receive e-mails automatically.



    On the plus side of e-mails, it doesn't intrude on a programmers flow. E-mail clients can be configured to alert or not depending on many criteria, and this can be changed at will according to the programmers necessity.



    Now, about scripting tools, another recent option is SBT, which is a build tools on the lines of Maven, though simpler, and which uses code in Scala - a JVM language -- instead of XML as its configuration language.



    Overall, and e-mail vs IM notwithstanding, this was a good article.

Educational Content

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.