background preloader

Continuous Integration

Continuous Integration
I vividly remember one of my first sightings of a large software project. I was taking a summer internship at a large English electronics company. My manager, part of the QA group, gave me a tour of a site and we entered a huge depressing warehouse stacked full with cubes. But this needn't be the way. This contrast isn't the result of an expensive and complex tool. When I've described this practice to people, I commonly find two reactions: "it can't work (here)" and "doing it won't make much difference". The term 'Continuous Integration' originated with the Extreme Programming development process, as one of its original twelve practices. Although Continuous Integration is a practice that requires no particular tooling to deploy, we've found that it is useful to use a Continuous Integration server. Building a Feature with Continuous Integration I begin by taking a copy of the current integrated source onto my local development machine. However my commit doesn't finish my work. Related:  Continuous Integration

Merciless Refactoring Home → Blog → Merciless-Refactoring Let's Code: Test-Driven JavaScript, my new screencast series on rigorous, professional JavaScript development, is now available! Check out the demo video here. Print by James Shore 02 Sep, 2005 Ron Jeffries started an interesting topic on the XP mailing list. I thought this was a great topic. Here are the most common refactoring problems I see with XP teams: Teams that don't refactor enough. These three issues aren't mutually exclusive and may reinforce each other. So what I would like to see is teams that do intraclass micro-refactorings every hour, do interclass refactorings multiple times per pair-week, and identify big-picture "architectural" refactorings every 2-12 months. I'd like to see teams identify one or two (max) architectural refactorings that are based on (a) reflecting on problems in the existing design and (b) how to improve the existing design; and use that architectural direction to guide their intra- and inter-class refactorings.

What is continuous integration (CI)? - Definition from What is continuous integration (CI)? Continuous integration (CI) is a software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base. The goal of CI is to provide rapid feedback so that if a defect is introduced into the code base, it can be identified and corrected as soon as possible. Continuous integration software tools can be used to automate the testing and build a document trail. Continuous integration has evolved since its conception. According to Paul Duvall, co-author of Continuous Integration: Improving Software Quality and Reducing Risk, best practices of CI include: Committing code frequently. CI originated from within the extreme programming paradigm but the principles can be applied to any iterative programming model, such as agile programming. This was last updated in July 2008 Email Alerts Register now to receive news, tips and more, delivered to your inbox.

Clean Code: A Handbook of Agile Software Craftsmanship (9780132350884): Robert C. Martin Meta Build Systems This is a story about my search for a hassle-free cross-platform open source (meta-/meta-meta-) build system. For our open source Bullet physics engine, I’ve been distributing the source code in a way that should make it as easy as possible to build out-of-the box. This means that for all supported platforms, the user (a developer who downloaded the Bullet SDK) should be able to download and unzip the zipfile or tarball on his machine, and get started as soon as possible. It should be hassle-free for the user but also for me, so I rather don’t manual updating too many files for each release. Aside from all the different platforms, we need to also support various compilers, compiler settings and integrated developer environments (IDEs). Here are a couple of build systems and modifications that I tried or considered to try: Visual Studio project files. autotools: for most unix flavors, autotools does a great job.

Refactoring Home What is Jidoka ? Jidoka is a Japanese term used for automation and being widely used in Toyota Production System (TPS), Lean Manufacturing and Total Productive Maintenance (TPM). Concept is to authorize the machine owner (operator) and in any case if a problem occurs on flow line, operator can stop the flow line. Ultimately defective pieces will not move to the next station. This concept minimizes the defects, over production and minimizes wastes. Also its focus is to understand the causes of problems and then taking preventive action to reduce them.History of Jidoka is back in early 1900’s, when first loom was stopped due to breakage of thread. The concept of automated line is being used to relieve workers and minimize human related errors. The purpose of Jidoka implementation is to diagnose the defect immediately and correct it accordingly. Jidoka is being effectively used in TPM, Lean Manufacturing and providing substantial benefits to the organizations.

Home - pyccuracy - GitHub George Dinwiddie's blog » How easy is it for your programmers to fix problems? A programmer, writing some new code, looks into some existing code that she needs to use. Something doesn’t look quite right. In fact, there’s a bug. Whether no one’s triggered it, or they have but their complaints haven’t reached anyone who will do something about it, is hard to say. In such a situation, I would prefer to write a new test illustrating the bug, fix it, and check both the test and the fix into source control. Maybe, however, there are policies, either explicit or tacit, that prevent such quick resolution. Perhaps there is a “ticketing” system that requires opening a formal change ticket before introducing a change. Perhaps someone else is the “owner” of this code, and you need to ask their permission before fixing it. I’ve often seen organizations that lock down their “architectural framework” code on the assumption that only their most senior developers can be trusted to work on it. Perhaps various teams have to analyze what effect the change will have on their code.

Main Page - STIQ Pitfalls In Automation The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community. The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company. Invariably, when we start talking about quality assurance and testing it’s not long before the talk turns to automation. Common Assumptions – Our First Mistake On my early projects I had my hand in numerous automation strategies both at BioWare and at other studios. It wasn’t until Dragon Age: Origins that I realized that I, like so many engineers I think, had been operating under a number of mistaken assumptions. The Cost of Testing For starters, testing is a function of Quality Control, not Quality Assurance. Perhaps automated testing might win out on cost, but certainly not on value. Additionally, automation is software too, and that means it is as prone to defects and in as much need of testing as any other software. Defect Prevention, Not Detection New Assumptions and the Road to Success

Continuous Integration with Hudson - the book Jenkins: The Definitive Guide Continuous Integration, or CI, is a cornerstone of modern software development best practices. Jenkins, an Open Source Continuous Integration tool, is by far the most popular Continuous Integration tool on the market, and for good reason! It's intuitive user interface and powerful features make setting up a Continuous Integration service a real breeze. This book will teach you how to build a powerful and robust CI infrastructure using Jenkins. Jenkins: The Definitive Guide is an open source book, and is freely available online and in PDF form. Platinum Sponsors Gold Sponsors Also helping out... Become a Sponsor! About the author John Ferguson Smart is a consultant specializing in Enterprise Java, Web Development, and Open Source technologies, currently based in Wellington, New Zealand.