Let's say I have two repositories, repository_a and repository_b
Whenever a merge happens in repository_b, a pipeline is triggered to push some code to my cloud service. I would like to a configure it so if a merge happens in repository_b, Bitbucket will check to see no pipelines are running in repository_b and if there are, wait until repository_a's pipeline is done before running the pipeline
Is there an option to do this?
Hi @z and welcome to the community.
You mentioned:
Bitbucket will check to see no pipelines are running in repository_b and if there are, wait until repository_a's pipeline ...
I believe you mean that Bitbucket should check if no pipelines are running in repository_a instead? And then wait until repository_a pipelines are finished?
There is no out-of-the-box feature to do this, but you could do it with a script using our API.
You can write a script with a while loop that checks if there are any pipelines with status PENDING, BUILDING or IN_PROGRESS in repository_a.
If there are, wait for e.g. 30 seconds or a different duration (depending on how much time builds in repository_a usually take) and repeat the loop.
When there are no pipelines with these statuses in repository_a, then exit the script.
You can then execute this script at the beginning of the build in repository_b, and when the script exits successfully, the rest of the build's commands will be executed.
You can use the following API endpoint to retrieve pipelines in repository_a
and you can filter by the statuses I mentioned as follows:
https://api.bitbucket.org/2.0/repositories/my-workspace/repository_a/pipelines/?sort=-created_on&status=PENDING&status=BUILDING&status=IN_PROGRESS
where my-workspace replace with the workspace id where repository_a belongs, and repository_a replace with the repo slug for that repo.
Kind regards,
Theodora
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.