In a Jenkinsfile, to start a parameterized pipeline job from another job, I have this code snippet:
build job: 'build-sharpen-branch', parameters: [
[$class: 'StringParameterValue', name: 'BRANCHNAME', value: mergeBranchname]
]
This already works as expected, and it will start a job at URL https://$JENKINS_URL/job/build-sharpen-branch/
.
Now I want to start a job, that is one branch of a multibranch project inside a Bitbucket folder. The URL of the job is https://$JENKINS_URL/job/iText%207%20.NET/job/sharpen/job/feature%2FQA-10738/
.
iText%207%20.NET
is the name of the Bitbucket project.sharpen
is the name of the Multibranch job.feature%2FQA-10738
is the name of the branch, urlencoded.
I read the following questions about starting a multibranch job NOT inside a folder:
- Trigger Multibranch Job from another
- Triggering a multibranch pipeline job from an other multibranch pipeline
- How to trigger Multibranch Pipeline Jenkins Job within regular pipeline job?
From the answers there, I gather that the syntax is $JOB/$BRANCH
(where $BRANCH
is URL-encoded to rename branches like feature/foo
to feature%2Ffoo
).
From Jenkins pipeline with folder plugin. How to build a job located different folder I gather that the syntax for a job inside a folder is $FOLDER/$JOB
.
Combining the two, I conclude that the syntax for folder+job+branch is most likely $FOLDER/$JOB/$BRANCH
.
So I tried with this code:
build job: "iText%207%20.NET/sharpen/${java.net.URLEncoder.encode branchName, 'UTF-8'}"
with
- folder =
iText%207%20.NET
- job =
sharpen
- branch =
${java.net.URLEncoder.encode branchName, 'UTF-8'}
(URLEncoder to change/
in the branch name to%2F
)
To my surprise, when I ran this, I got an error:
ERROR: No item named iText%207%20.NET/sharpen/feature%2FQA-10738 found
As already stated above, a job exists on URL https://$JENKINS_URL/job/iText%207%20.NET/job/sharpen/job/feature%2FQA-10738/
.
What is the correct syntax for a multibranch job inside a Bitbucket folder?