0

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:

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?

Amedee Van Gasse
  • 7,280
  • 5
  • 55
  • 101

2 Answers2

0

The problem was with the folder name iText%207%20.NET, which is an urlencoded version of iText 7 .NET. Apparently Jenkins can't handle urlencoded spaces in folder names.

I renamed the folder to itext_7_dotnet and then used

build job: "itext_7_dotnet/sharpen/${java.net.URLEncoder.encode branchName, 'UTF-8'}"

This works.

Moral of the story: never use spaces in your folder names!

Amedee Van Gasse
  • 7,280
  • 5
  • 55
  • 101
-1

For us, this works:

    
    build job: "${folder}/${repo}/${branch.replace('/','%2F')}", wait: false, propagate: false

You can also trigger build by using curl, with crumbs and all that.

MaratC
  • 6,418
  • 2
  • 20
  • 27
  • Doesn't work, I still get "ERROR: No item named iText%207%20.NET/sharpen/feature%2FQA-10738 found". Differences between your solution and mine: (1) you use `replace` to replace a single character, I use `URLEncoder.encode` which does exactly the same replacement for the `/` character, but would also do other replacements in case one of our developers in Belarus would accidentally use a Cyrillic character in a branch name. Or if some joker from QA would use an emoji in a branch name (`feature/`). (2) you use extra parameters `wait` (which in my case must be true) and `propagate`. – Amedee Van Gasse Sep 01 '20 at 06:46