Return-Path: X-Original-To: apmail-ant-ivy-user-archive@www.apache.org Delivered-To: apmail-ant-ivy-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 62BB09FF0 for ; Wed, 20 Jun 2012 00:22:22 +0000 (UTC) Received: (qmail 78404 invoked by uid 500); 20 Jun 2012 00:22:22 -0000 Delivered-To: apmail-ant-ivy-user-archive@ant.apache.org Received: (qmail 78342 invoked by uid 500); 20 Jun 2012 00:22:22 -0000 Mailing-List: contact ivy-user-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ivy-user@ant.apache.org Delivered-To: mailing list ivy-user@ant.apache.org Received: (qmail 78333 invoked by uid 99); 20 Jun 2012 00:22:22 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Jun 2012 00:22:22 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=FSL_RCVD_USER,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of mgitman@gmail.com designates 209.85.212.45 as permitted sender) Received: from [209.85.212.45] (HELO mail-vb0-f45.google.com) (209.85.212.45) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Jun 2012 00:22:15 +0000 Received: by vbbfn1 with SMTP id fn1so4155393vbb.4 for ; Tue, 19 Jun 2012 17:21:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=xbmeYZci+qjk1QqitHk7ToLhGzyzmYK6Ws6P7fIaR/c=; b=C4qk1x2Uz71kcQPyrI/09qJhNEablxDe0qTt2OpbQJbG9icfbLEzexX/JaboOoWdem z8bNOyEL+QjElzLFfZwCRdQM+XplaFQ78oCgIXyl8aMPhs604pHKxK488HEO2ZjCiaKw n6dkfB5K7hznFlz9g7taiO55tYmG0HshLtz0GSmht5vRxnV7oEzcK06iwulOfkqglEjV qZzdEsEiFUUv7bpsojRTUXTQMz5XQJtjSFQPNGfkaLbmFiENN1q3L3nvXAzddgX4ddRA fjrF+UnhwSRjLlkY3HKeTSMqRnsPGOF/yEoVyru6zPm4lQgnmt8LshfYNVWTqW/R9QtL oGEg== MIME-Version: 1.0 Received: by 10.220.209.75 with SMTP id gf11mr10562944vcb.56.1340151714841; Tue, 19 Jun 2012 17:21:54 -0700 (PDT) Received: by 10.220.17.27 with HTTP; Tue, 19 Jun 2012 17:21:54 -0700 (PDT) In-Reply-To: References: Date: Tue, 19 Jun 2012 17:21:54 -0700 Message-ID: Subject: Re: Efficient dependency rebuilds for development and debugging From: Mitch Gitman To: ivy-user@ant.apache.org Content-Type: multipart/alternative; boundary=bcaec54eee66e8851a04c2dc6217 X-Virus-Checked: Checked by ClamAV on apache.org --bcaec54eee66e8851a04c2dc6217 Content-Type: text/plain; charset=UTF-8 Quick correction for more precise language, and then I'll leave things be. I wrote: " You're never going to have Jenkins jobs for B running simultaneously. Plus, for each build, you're always going to know which commit on which project manually kicked off each build stream." I meant: " You're never going to have two or more Jenkins jobs for project B running simultaneously. Plus, for each build, you're always going to know which commit on which project automatically kicked off a build stream, or else you're going to know that it was kicked off manually." On Tue, Jun 19, 2012 at 4:19 PM, Mitch Gitman wrote: > Answers inline prefaced with MG: > > On Tue, Jun 19, 2012 at 3:48 PM, Joel Dice wrote: > >> Hi Mitch, >> >> Thanks for your response. Please see my comments below. >> >> >> >> Yes, that's what happens on the CI server. Are you suggesting that each >> developer run a CI server on his or her development machine and let it take >> care of cascading changes? >> > > MG: No, what I'm suggesting is that, whatever modules a developer is > actively working on, they publish them to a local Ivy repository. The more > modules you're actively developing, the more it behooves you to automate a > multimodule build. > >> >> Also, I don't necessarily want to rebuild every module that depends >> directly or indirectly on the one I just changed. Instead, I normally want >> to rebuild the minimum amount of code needed to test a specific top-level >> (i.e. most-dependent) project. Once I'm happy with my change as far as it >> concerns that project, I can kick off builds of other projects that depend >> on the module(s) I've changed and run their respective tests, but it make >> take several iterations of debugging the initial project before I get to >> that point. >> >> MG: If you're actively integrating the changes in your component project > against some dependent projects but not others, then the latter projects > should not be depending on integration versions. They should be waiting for > milestone or release versions to come out. Also, there's something curious > about the following language: "Once I'm happy with my change as far as it > concerns that project, I can kick off builds of other projects..." There > should be no manual steps in the process, at least on the CI server. Once > you check in changes to one project, you should let them bubble up > automatically to everything that depends on their integration versions. > Cascading builds on a CI server is a cost-free exercise, and if something > is good enough to check in, it's good enough to check about its downstream > effects. There's always revert. > > >> >>> >> I don't think that will give me reentrant builds, though. If I kick off >> two builds at around the same time (say the build takes a while and I want >> to build and test two separate changes in parallel), it's non-deterministic >> as to what I'll end up with when the most-dependent module is built. >> > > MG: Take the example of Jenkins/Hudson. You're never going to have Jenkins > jobs for B running simultaneously. Plus, for each build, you're always > going to know which commit on which project manually kicked off each build > stream. Plus, you know exactly which version of each project has been built > and published along with the precise versions of the things it depends on. > > All the things you should care about are deterministic. The build you care > the most about is the latest one. You want to get the latest green. You > want to keep it green. And if you do see a red, you want to be able to > reproduce it in some way in case you can't readily explain what went wrong. > > It sounds like at this point we're digressing away from the particulars of > Ivy usage and into a broader discussion of continuous integration > philosophy, so I'm probably going to have to let this be my last word on > this mailing list thread. > > >> >> --bcaec54eee66e8851a04c2dc6217--