Bamboo plan as parent of other plans
Asked by Shai:

Hi

I have a project (A) which takes artifacts from other projects (B,C,D).

Currently, I build project B,C,D and the when i build project A it takes the latest artifacts from other projects.

What is the best way to create a "one click" plan that build project B,C,D and then build A ?

I thought about tasks in build plan for project A that triggers building other plans, and if task success then continue with the plan.

Child dependency is not good for me as it triggers a child plan only at the END of the parent plan. (not during the execution of the parent plan)

Thanks!


Answers:
author: quochuy
body: This is an old thread but I encountered the exact same issue and might have found something working.

So initially I have plans "**Build A", "Build B"** and**"Build C"**. Each of them needs to checkout the content of different GIT repositories.

Then I have another plan called "Collect artifacts for Project Deploy" which I want to collect the artifacts from the A, B and C plans above.

For a single click solution, what I did is create yet another plan called:**"Build Project"** which contains a single task which is a dummy Script that just does an: echo "Project build started". But as dependencies I've set it up to then trigger the build of A, B and C.

Then each **A, B** and**C** is configured to trigger **"Collect artifacts for Project Deploy".**

Finally **"Collect artifacts for Project Deploy"** is configured to be blocked if either parents are having un-built changes, which also include if either parents are in queue.

So to build my project I just need to manually trigger**"Build Project"** and leave the rest to Bamboo.

comments: author: Benedek Farkas
body: That looks like a nice workaround! Although I'm really surprised that Bamboo doesn't support this kind of dependency flow by default. Do you have any new information of this matter by any chance?


author: Benedek Farkas
body: We are trying to set up Bamboo to replace our current CI flows running in TeamCity, but this seems to block us. Can anyone from Atlassian give us an update on this, please?


author: Teosseth Altar
body: Hi Shai,

It seems that I am encountering the same scenario. Did you came up with an acceptable solution?

Thanks!


author: cbenard1
body: Hi Shai,

I believe there are a couple of options here depending on your build process.

Does it matter if builds B, C, D are run in parallel? Would it be OK to run them one at a time? If so you have have a chain of dependencies. A is triggered when B is completed, B is triggered when C is completed, C is triggered when D is completed, and D runs manually or on whatever trigger you specify. This way all of your artifacts are available for when A is triggered and this essentially only takes the single event to kick of build D.

Another alternative I can think of would be to make B, C, and D all separate stages of a single plan. This way a single plan is run and all stages fire off building the necessary artifacts for A. You can then select the option "Trigger dependencies only when all stages have been run successfully" under dependencies so A will not run without having all the artifacts. WIth A a dependency of the plan containing stages B, C, and D it would be a 1 click run as well.

Thanks!

Turner

comments: author: Shai
body: I already considered the options you describe -

1. It is a "one click" solution I consider using. I just find it kind of weired that if i want to build A i actualy need to launch D build plan.

2. The second alternative is problematic becuase i still need to manage version for each project. e.g. if build for project B runs, i need to be able to track the build number, keep artifact etc... and when building it within a stage , i won't be able to do so.

Maybe i can do it with Bamboo REST API -

In plan A , have a script task to build B,C,D. when all complete successfully, then plan A will be marked as complete.

I wish there was a built in task to trigger other plan and return the results of it.

Thanks!

Shai


author: cbenard1
body: Hi Shai,

I believe I'm not quite understanding what's weird about the first option if you wouldn't mind explaining further. The way I see it A is dependent on B, C, and D because it shouldn't build until each of those plans have issued a newly updated artifact to pick up. As such it seems logical that A should follow those three and each should lauch and complete before A starts. Would you mind clarifying so we're on the same page? Why does plan A need to start first (especially becuase it's the plan that's dependent on the others not vice versa).

Maybe I'm not understanding your exact use case properly. The way you've described what you'd like to do seems counter intuitive. If A needs to use the results of B, C, and D why would you want A to trigger those builds?

Thanks!

Turner


author: Shai
body: Hi Turner,

More then i need a working solution, i need a solution which is trivial to all stakeholders.

When one need to produce artifact from plan A, i think it is more trivial to run plan A, rather then run plan D, so it will produce arifact of A.

At least thats how i see it.

In my case, the dependent projects can change from time to time. So i rather have a parent plan i can modify accordingly instead of changing a chain of plans that triggers one another.

Thanks!

Shai


Tags: child-page

cloud

hierarchy