Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-926

An option to delay building after checkout detected for SVN

    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

      An option to delay building after checkout detected for SVN

      Under some usages, people don't want check-ins to automatically trigger a build, rather, they want Bamboo to wait a certain time period to ensure no further commits occur before triggering off the build.

      From http://forums.atlassian.com/thread.jspa?messageID=257243505#257243505

      A large project with several thousand classes had some files moved between the modules. Committing from root will take too much time just to analyze the changes, so a developer decides to commit in 2 changesets, for each sub-project changed.

      Now, the time window between the commits can be several minutes, but Bamboo may kick in and report a broken build, while it's only a timing problem.

      Believe me, it's applicable to any version control system, and given that others supported it from the beginning, it will leave your users scratching their heads.

      This will be an optional "Advanced" option.

      Some potential usage issues to be aware of:

      1. Bamboo won't be as responsive to commits and failures. If you have a 3 minute wait period, then there's at least a 3 minute window where the code may be in an unknown, inconsistent state
      2. Could lead to a build not building for a while if there are many commits to a project (ie new commits within the 3 minute window)

            [BAM-926] An option to delay building after checkout detected for SVN

            edwin added a comment -

            Hi guys,

            This feature is now officially released in Bamboo 2.0!

            For more information about the release, check out our release notes.

            You can download the latest release here today!

            Regards,
            Edwin

            edwin added a comment - Hi guys, This feature is now officially released in Bamboo 2.0! For more information about the release, check out our release notes . You can download the latest release here today! Regards, Edwin

            Great to hear! We'll give it a spin once published.

            Andrew Andrew added a comment - Great to hear! We'll give it a spin once published.

            MarkC added a comment -

            Folks,

            This will be available for the next beta (beta7), which will come out next Tuesday. It's implemented as an optional advanced setting for SVN.

            Cheers,

            Mark C

            MarkC added a comment - Folks, This will be available for the next beta (beta7), which will come out next Tuesday. It's implemented as an optional advanced setting for SVN. Cheers, Mark C

            Matt Stine added a comment -

            An additional use case for me in support of this feature. We require meaningful comments (e.g. brief description of the change made to the file, JIRA issue key related, etc.) to be attached to each file checked in to our SVN repository. Therefore, if I'm checking in 6 files and each needs a different comment, often times the polling interval will pass before I'm done checking in each file. This will result in a broken build if all 6 changes are necessary for the tests to pass.

            Matt Stine added a comment - An additional use case for me in support of this feature. We require meaningful comments (e.g. brief description of the change made to the file, JIRA issue key related, etc.) to be attached to each file checked in to our SVN repository. Therefore, if I'm checking in 6 files and each needs a different comment, often times the polling interval will pass before I'm done checking in each file. This will result in a broken build if all 6 changes are necessary for the tests to pass.

            Bob Swift added a comment -

            AntHill has this feature

            Bob Swift added a comment - AntHill has this feature

            MarkC added a comment -

            Guys,

            We're not rejecting the feature by any means and I believe this and BAM-1248 can co-exist quite happily as options. Which one you go for really depends on your setup.

            If you have a project with a 100 commits a day and 40 minute builds (like Andrew has) BAM-926 is probably more practical. If you have 20 commits a day (like Matt has in his Confluence builds), you can probably afford to be stricter with triggering builds per commit (BAM-1248).

            On a general note, I guess this is why we have our issues public. This issue already has quite a few votes and many watchers, so it's fairly clear that your use case is far from uncommon. When we address the atomic commit issue, we're quite likely to address this issue as well.

            Cheers,

            Mark C

            PS As a side note, Matt's a Confluence developer, so he's just putting his 2 cents on this topic, rather than making a call on behalf of the Bamboo team. In JIRA land, he's still only got one vote

            MarkC added a comment - Guys, We're not rejecting the feature by any means and I believe this and BAM-1248 can co-exist quite happily as options. Which one you go for really depends on your setup. If you have a project with a 100 commits a day and 40 minute builds (like Andrew has) BAM-926 is probably more practical. If you have 20 commits a day (like Matt has in his Confluence builds), you can probably afford to be stricter with triggering builds per commit ( BAM-1248 ). On a general note, I guess this is why we have our issues public. This issue already has quite a few votes and many watchers, so it's fairly clear that your use case is far from uncommon. When we address the atomic commit issue, we're quite likely to address this issue as well. Cheers, Mark C PS As a side note, Matt's a Confluence developer, so he's just putting his 2 cents on this topic, rather than making a call on behalf of the Bamboo team. In JIRA land, he's still only got one vote

            Guys, what you are telling is all nice, but face the reality - if you reject this feature as in 'you should do it this (right) way', the one to lose would be Atlassian, by angering users with the lack of such trivial and expected feature.

            That sounds much the same as 'distributed transactional systems must never fail because you have a fully-functional XA transaction manager'. Guess what, they fail, and to the extent that standard heuristic exceptions have been introduced to denote cases when it gives up and requires manual intervention/resolution. Don't fix the world, this attempt would fail.

            Andrew Andrew added a comment - Guys, what you are telling is all nice, but face the reality - if you reject this feature as in 'you should do it this (right) way', the one to lose would be Atlassian, by angering users with the lack of such trivial and expected feature. That sounds much the same as 'distributed transactional systems must never fail because you have a fully-functional XA transaction manager'. Guess what, they fail, and to the extent that standard heuristic exceptions have been introduced to denote cases when it gives up and requires manual intervention/resolution. Don't fix the world, this attempt would fail.

            This could be useful even in Subversion. I am often encountering this problem: I make an atomic Subversion commit which contains interdependent changes between multiple Bamboo build plans. Bamboo then does not always build the plans in the right order.

            Max Bowsher added a comment - This could be useful even in Subversion. I am often encountering this problem: I make an atomic Subversion commit which contains interdependent changes between multiple Bamboo build plans. Bamboo then does not always build the plans in the right order.

            Matt Ryall added a comment -

            I don't understand why this is required. I want the opposite (BAM-1248), where every commit is guaranteed to generate a single build.

            Andrew, it sounds like you want to make a breaking commit to the repository, but not have the build fail. If the team doesn't want to fail the build, they should ensure the repository is never in an inconsistent state. If the repository is ever in a broken state, it's the responsibility of the build system to report that.

            For the former real-life scenario (involving multiple components), you can version your components using a dependency management system like Maven or Ivy. Don't change the version of component A that component B depends on until the changes to component A have been committed, tested and released as a new version. This is how we manage our internal dependencies at Atlassian, for example.

            For the latter real-life scenario (involving geographically-separate interdependent commits), how can the developers be sure that their changes will even function together without consolidating their work first? The only sane way to commit this kind of work is to integrate it all on a single workstation and test it before committing. Anything else is more likely to fail the build simply due to incompatibilities, even if Bamboo did wait to pick up both commits.

            Matt Ryall added a comment - I don't understand why this is required. I want the opposite ( BAM-1248 ), where every commit is guaranteed to generate a single build. Andrew, it sounds like you want to make a breaking commit to the repository, but not have the build fail. If the team doesn't want to fail the build, they should ensure the repository is never in an inconsistent state. If the repository is ever in a broken state, it's the responsibility of the build system to report that. For the former real-life scenario (involving multiple components), you can version your components using a dependency management system like Maven or Ivy. Don't change the version of component A that component B depends on until the changes to component A have been committed, tested and released as a new version. This is how we manage our internal dependencies at Atlassian, for example. For the latter real-life scenario (involving geographically-separate interdependent commits), how can the developers be sure that their changes will even function together without consolidating their work first? The only sane way to commit this kind of work is to integrate it all on a single workstation and test it before committing. Anything else is more likely to fail the build simply due to incompatibilities, even if Bamboo did wait to pick up both commits.

            If the above didn't convince you, here's another real-life scenario. Developers are spread across continents. The next build should contain changes from both of them. They agree (over the mailing list / phone) they are ready to go with their changes which are complimentary to each other. There's no technical way to commit those in one changeset, isn't it? So, they want to commit at the same time, and have the server pick their changes altogether, not randomly jumping in.

            The transactional nature of changesets in SVN was designed with different goals in mind, and it does it well. We're discussing a higher-level feature. Consider the difference between an ACID transaction in itself and a BPM solution with compensating transactions.

            Andrew Andrew added a comment - If the above didn't convince you, here's another real-life scenario. Developers are spread across continents. The next build should contain changes from both of them. They agree (over the mailing list / phone) they are ready to go with their changes which are complimentary to each other. There's no technical way to commit those in one changeset, isn't it? So, they want to commit at the same time, and have the server pick their changes altogether, not randomly jumping in. The transactional nature of changesets in SVN was designed with different goals in mind, and it does it well. We're discussing a higher-level feature. Consider the difference between an ACID transaction in itself and a BPM solution with compensating transactions.

              Unassigned Unassigned
              mark@atlassian.com MarkC
              Votes:
              11 Vote for this issue
              Watchers:
              12 Start watching this issue

                Created:
                Updated:
                Resolved: