I am using the REST API endpoint https://mybamboo.company.com.com/rest/api/latest/queue/<ProjectKey>-<PLanKey>
According to documentation, this endpoint supports parameters stage=<nameOfStage> and executAllStage=<true/false>
I cannot get either the stage or executeAllStages parameters to work. Regardless of how I set them, the behavior remains the same. The automatic stages are executed, but stop when it hits the first manual.
Assume I have 3 stages named: Stage1, Stage2, Stage3. Stage3 is manual
I am using the Ansible URI module, so the call looks like:
-
uri:
headers:
Authorization: 'Bearer {{ bearer_token }}'
body_format: raw
body: stage=Stage3&executeAllStages=true
method: POST
url: https://mybamboo.company.com/rest/api/latest/queue/TAU-ETX/
The equivalent curl would be:
curl --fail
-H "Authorization: Bearer <XXX>"
-X POST
-d "stage=Stage3&executeAllStages=true"
--location https://mybamboo.company.com.com/rest/api/latest/queue/TAU-ETX
In both formats, the call runs without errors, but no matter how I set the values for stage and executeAllStages, Stage1 and Stage2 are run, Stage3 is not.
There are a lot of questions about this and closely related issues, the best answer I have found being https://community.atlassian.com/t5/Bamboo-questions/Rest-Api-to-start-a-stage-for-build/qaq-p/786887 but I have not been able to get by this.
Can someone help me find my error or confirm there is a bug?
Hi @james_mckean ! How are you doing?
Did you try to add the stage and/or executeAllStages parameter to the end of the URL instead of passing it as a body?
Hope this helps!
Sorry for the long wait.
I am used to using Ansible, so my curl formatting is rusty. If you mean something like
curl --fail -H "Authorization: bearer XXX" -X POST https://bamboo.mybamboo.com/rest/api/latest/queue/TAU-ETX?stage=3&executeAllStages=true
then I get an error like
no matches found: https://bamboo.dev.mybamboo.com/rest/api/latest/queue/TAU-ETX?stage=3&executeAllStages=true
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Oh, wait. I am in a zsh shell so apparently the ? needs to be escaped with double quotes.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
OK, further experimenting. I cannot get the bearer token to work, but basic authentication does. Final working format is:
curl --fail -k --user <user>:<password> -X POST https://bamboo.mybamboo.com/rest/api/latest/queue/TAU-ETX"?stage=3&executeAllStages=true"
This builds all stages including the manual one. Now I just have to figure out how to accomplish the same in Ansible.
Thanks for the hint.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @james_mckean !
I am very glad to hear that it worked.
And thanks for give back the Ansible example to the community!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For anyone else trying to make this work in Ansible, the correct format is
name: 'execute all stages test'
hosts: localhost
tasks:
-
uri:
headers:
Authorization: 'Bearer {{ bearer_token }}'
method: POST
url: "https://bamboo.myBamboo.com/rest/api/latest/queue/TAU-ETX/?stage=Stage3&executeAllStages=true"
validate_certs: false
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.