0

Using a continuous integration on my project, I need to checkout the code from latest sprint from BAZAAR as bzr://path/to/myproject/sprint/123

As this path is changing repeatedly (for each sprint), I'm currently using externals to create a bzr://path/to/myproject/current pointing to bzr://path/to/myproject/sprint/123.
So, I just need to change the externals to redirect the continuous integration tool to the latest project.

Is there another way to do this ?
What I don't want is to change the configuration of my project inside the continuous integration tool (CruiseControl.NET).

TridenT
  • 4,879
  • 1
  • 32
  • 56
  • That depends on what CI tool are you using - can you please provide more details? – skolima Mar 05 '12 at 10:15
  • The CI used in CruiseControl.NET with BZR plugin. – TridenT Mar 05 '12 at 10:17
  • 1
    The git version control provider for CCNet simply builds from the master branch - I assume you don't want that? Do you plan to build all branches that are available? That's an interesting problem, something like this was discussed for git plugin, but I don't think it ever got traction. – skolima Mar 11 '12 at 22:05
  • AT least, I would like to build each (active) iteration master branch, and on an extended use, yes, each branches for each iteration. – TridenT Mar 12 '12 at 15:21
  • I've read through the Bazaar docs, but didn't find any reference to 'iteration'. Could you elaborate what it means in this context? – skolima Mar 13 '12 at 09:50
  • ho, it is like a sprint in agile development. Just a bunch of work identified with a number. – TridenT Mar 13 '12 at 20:49
  • I don't understand ... do you have multiple sprints in progress at once? Why create a separate branch for each one? In other words: why not make "current" a real thing and just do the work there? Actually I will suggest that as the answer. – Zac Thompson Mar 15 '12 at 07:11

3 Answers3

1

One option (might not be suitable for your teams' processes) would be to stop using a separate "sprint" location in bzr for each iteration's changes. Instead, just use a "trunk" (or perhaps your "current" above). If you are usually in a situation where you have multiple sprints having changes at the same time, then this would probably not be appropriate.

Zac Thompson
  • 12,401
  • 45
  • 57
  • At first, the reply look strange, but then I start asking why a few times. Maybe this issue can be inverted, so main development is stored in the 'current' path, and push to a 'sprint/XYZ' path at the end. I will investigate ! – TridenT Mar 15 '12 at 12:16
  • Answer accepted! You just earn the reward. I will create **sprintA** for teamA, and **sprintB** for teamB, so only two CC.NET projects. thx ! – TridenT Mar 17 '12 at 09:08
0

I suppose you can use a lightweight checkout.

bzr checkout --lightweight bzr://path/to/myproject/iterations/123 bzr://path/to/myproject/current

You can then use bzr switch to switch to the next branch (I'm not sure if it will work over the network):

bzr switch -d bzr://path/to/myproject/current bzr://path/to/myproject/iterations/124
AmanicA
  • 4,659
  • 1
  • 34
  • 49
  • I'm pretty sure you can't create a lightweight checkout over the network. If these are file:// URLs it should work though. – jelmer Mar 05 '12 at 20:03
0

After searching the web, I've found some articles about this question.

There are two solutions so far:

  1. Automatically detect newly finished branch and build them. There is an example here using CC.NET. It is so applicable to my iterations.
  2. Another way is to provide scripts to developer that execute most of the CI tool. This is not perfect, but this may detect issues before merging in the trunk.

Other references:
Best branching strategy when doing continuous integration?

Community
  • 1
  • 1
TridenT
  • 4,879
  • 1
  • 32
  • 56