Keeping Bamboo happy during Stash downtime
Asked by Config Manager:

We have Stash 2.10.0 linked with Bamboo 5.3 for builds, both running as Windows services.  

Build Plans in Bamboo are set to poll Stash every 5 minutes for changes, and build when necessary. This works great most of the time, except when Stash is down for backup (which I do by stopping the service and tar'ing up Stash home before restarting).  

During the Stash downtime, Bamboo reports "Unable to detect changes" errors for each plan - not surprising since Stash is not responding.  

So in an attempt to avoid these, I tried shutting the Bamboo server service down for the duration of the Stash backup, but I've found that this then causes the remote Build Agents to go offline and I have to manually restart them.  

The only solution I've come up with to avoid error conditions is to switch the repository polling from "Every 5 minutes" to cron based , excluding the the backup period, such as "0 0/5 06-22 \* \* ?" (ok the backup doesn't take 8 hours!). But this will mean every plan firing off at the same second every 5 minutes unless I choose different second/minute combination for each plan, which is a pain as I'm trying to standardise as much configuration as possible between plans.  

Is there any other solution that you can suggest which avoids explicit scheduling? Getting the remote agents to cope with server downtime would be preferable I think.


Answers:
author: Peter Van de Voorde
body: Hi John,

You could also just trigger your builds using a post-receive hook in Stash.

[](https://marketplace.atlassian.com/plugins/com.atlassian.stash.plugin.stash-web-post-receive-hooks-plugin)<https://marketplace.atlassian.com/plugins/com.atlassian.stash.plugin.stash-web-post-receive-hooks-plugin>

using the following url to your build plan :

http://\<bamboo-server\>/api/rest/updateAndBuild.action?buildKey=\<projectkey\>-\<plankey\>

You'll need to add a remote trigger to your Bamboo build plan so it can be triggered by this call.

If you do this then your problems are nonexistent :)

Best regards,

Peter

comments: author: Config Manager
body: Thanks, Peter, I was vaguely aware of this possibility but hadn't investigated it yet. I'll give it a try, although from what I've read in other posts I think I have to explicitly install the hook in every new repo when a build plan is set up for it.  

BTW I've since realised that I could use a cron expression to schedule the polling as well, but I'd still have the "everything polls together" problem.  


author: Peter Van de Voorde
body: Hi John,

I just made a quick blogpost about it : [](http://www.petervandevoorde.com/2014/01/21/triggering-a-build-in-bamboo-from-stash/)<http://www.petervandevoorde.com/2014/01/21/triggering-a-build-in-bamboo-from-stash/>

It gives step by step instructions.

You will indeed need to do this for each repo and new build plan.

Best regards,

Peter


author: Andrew Hill
body: Sounds painful! It would definitely be much easier to be able to define a global view in Bamboo as to when Stash is going to be offline for a backup.


author: Config Manager
body: Ah well, I should have fully checked before submitting this question. Cron-based scheduling runs the plan every 5 minutes irrespective of whether any changes were committed. So that's no good either :-(