diff --git a/.changeset/honest-countries-deny.md b/.changeset/honest-countries-deny.md new file mode 100644 index 0000000000..14c9094592 --- /dev/null +++ b/.changeset/honest-countries-deny.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-backend': patch +--- + +Fix handling of slashes in branch names diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index 57ce2dbed4..c89a3866c7 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -173,6 +173,7 @@ describe('JenkinsApi', () => { 'foo', 'bar', 'catpants', + 'with-a/slash', ]); expect(mockedJenkins).toHaveBeenCalledWith({ @@ -192,6 +193,10 @@ describe('JenkinsApi', () => { name: `${jenkinsInfo.jobFullName}/catpants`, tree: expect.anything(), }); + expect(mockedJenkinsClient.job.get).toHaveBeenCalledWith({ + name: `${jenkinsInfo.jobFullName}/with-a%2Fslash`, + tree: expect.anything(), + }); expect(result).toHaveLength(1); }); }); diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.ts b/plugins/jenkins-backend/src/service/jenkinsApi.ts index ef4ddc47b0..e14437fa68 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.ts @@ -80,7 +80,7 @@ export class JenkinsApiImpl { const job = await Promise.any( branches.map(branch => client.job.get({ - name: `${jenkinsInfo.jobFullName}/${branch}`, + name: `${jenkinsInfo.jobFullName}/${encodeURIComponent(branch)}`, tree: JenkinsApiImpl.jobTreeSpec.replace(/\s/g, ''), }), ),