-
Bug
-
Resolution: Fixed
-
Critical
-
None
-
Jenkins 2.32.1, Bitbucket Branch Source Plugin 2.0.0
-
Powered by SuggestiMate
Since the SCM 2.0 release, I can't find a way, in a pipeline, to get a human-readable job & branch name.
For example, if I had a BitBucket team called 'Foo', a repository called 'Bar' and a branch 'feature/KEY-Baz', it used to be possible to get a nearly human readable branch - env.BRANCH_NAME would be 'Foo/Bar%2FKEY-Baz', which was easy enough to escape to a human readable form.
Now, however, it's a shortened form, with numbers in it - something like 'Foo/Bar.qxyz123/feature-KEY.abcd12345ghij-Baz'. And there appears to be no way to get the human readable version. This has broken all of my build notification templates.
Here's my 'build started' notification, for example:
hipchatSend color: 'YELLOW', credentialId: 'HipChat', message: "<a href='${env.BUILD_URL}'>${env.JOB_NAME.replace('%2F', '/')} ${env.BUILD_NUMBER}</a> Started", notify: true, room: 'Build Server Messages', sendAs: 'Jenkins', server: '', v2enabled: false
- causes
-
JENKINS-59756 NameEncoder.decode can introduce duplicate characters per build to name-utf8.txt
-
- Resolved
-
-
JENKINS-72613 AbstractItem.doReload picks wrong name for some branch projects
-
- Resolved
-
- links to
[JENKINS-41124] Can't get a human readable job name anymore
I know the mangling of the paths is there to ensure uniqueness - but it's causing problems for me like crazy. An option to disable it would help a lot.
What about the job name? Is there a way to get an unmangled form of that?
The S3BucketPublisher, BTW, uses run.getParent().getFullName(); to determine the prefix. If I can get an unmangled job name, I can do my own S3 uploads, but if I want to keep using this plugin, I need a way to make the parent's full name to be unmangled.
The impact of this issue is that previously users expected to be able to construct the expected URL on their own, but now it is generated using a non-transparent algorithm.
Mic says he's had 10 people in the last 24 hours mentioned that they are surprised by the new URL scheme.
For example, here is a new URL:
Which is not love-able.
There is also external tooling which depends on this structure.
the job display name should be the unmangled name (unless the user has customized, but you cannot customize display name for multibranch)
We can expose the display name as an environment variable too
The Job name cannot stay as is currently.
% is not a valid character on some file systems.
.. is a valid branch name on some source control systems.
Even seemingly "safe" filenames like aux can cause issues for users.
There is a very limited set of characters that are safe for filesystems: A-Za-z0-9_.- is all there is to play with
Furthermore, the name length causes lots of issues. So we need to ensure that the branch name is not "too long"
The only way out of that with minimal risk of collisions is a deterministic hashing algorithm... which becomes ugly... or part name part hash with some characters used to disambiguate to prevent the smaller hash from causing issues.
The current algorithm was chosen to reduce the risk of collision to less than 1 in 33 million, which is about as low as we can go before things get ugly.
If somebody else has a wonderful magical scheme for mapping names from the entire unicode space in a predictable pattern into the character set A-Za-z0-9_.- that also makes care to ensure silly branch names like .. are not given the name .. and dangerous branch names like AUX, CON, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, PRN, NULL or their lower case equivalents are mapped into something sensible, and doesn't have risk of collisions (e.g. when JENKINS-36240 gets merged and then we can potentially start building "trusted" fork branches such that the branch name is now controlled by the fork)... oh and can we not actually change the job name from the branch name... and can we keep the job names to something short... well I'm all ears... but I think you will find it an impossible and thankless task.
What we need to do is expose the human readable bits correctly and ensure that plugins do correct things rather than blinding assuming things.
We probably also need to apply name mangling in core to all jobs... but that is a different story.
Blue Ocean could use getItemByBranch() to resolve branches if blue ocean wants to handle the case of branch names like .. other than that, jenkins core will still resolve the old urls
if people want we can increase the length of the hash but reduce the bits encoded by making those hashes "pronounceable"... but that limits the bit space that we have to play with. Base32 is what we use currently.
Is there a reason we can't have an option (disabled by default) to leave the job & branch name the way the user specified it? Because a lot of those problems aren't problems for a lot of users, a lot of the time, and can be worked around by selection of repository & branch name. Whilst mangling the job name can not be.
I understand that in environments like CloudBees that this will be a problem - but in a standard self-hosted development environment, we would be extremely unlikely to encounter these issues.
[Also, I believe you're unnecessarily conflating the Job name with the workspace name - the Job name isn't part of any filespace other than the web URL (and HTML escaping works fine for that)]
I've rolled back now, so I can't easily check, but from my recollection the env.JOB_DISPLAY_NAME didn't have the unmangled version - I did a dump of all of the environment properties, and not one was unmangled except for the BRANCH_NAME property. It's possible that the JOB_DISPLAY_NAME wasn't set yet, as I did the dump at the start of the job; I'll double-check that tonight.
twasink it looks like this is going to be temporarily moved out of the main update center until this (and one other issue) are addressed and tested. For now it seems you are in an ok place after you restored?
Check your JENKINS HOME:
JENKINS_HOME/jobs/${orgFolderName}/jobs/${mangledMultibranchProjectName}/branches/${mangledBranchName}
It's not the workspace name as that is already mangled (with an unnecessarily long hash that causes issues for windows builds but that is a different story)
In the above path the only user controlled names is orgFolderName
The other two names come from the SCMNaviagtor and the SCMSource respectively and we have no control over what names they give us back.
We already saw one issue with names containing Korean and Chinese characters on unix filesystems
michaelneale Yes, after restoring from the backup (which I took as advised in the upgrade notes), I'm working fine again.
It still sounds like what you need is to escape/transform/mangle the job name only when it comes to writing to the filesystem, though. Yes, transforming the job name is probably the easiest way to do that without changing the existing plugins, but it has serious knock-on impacts.
You seem to have a choice:
- (optionally) transform the job name, then fix every plugin that really needs access to the untransformed job name, or
- keep the job name as specified by the user, and only mangle it when needing to build a filesystem path.
twasink it does need some mangling on the URI - so that a path like:
foo/bar/baz/boo
isn't ambiguous if the branch name is "foo/bar" (hence it used to have the simple escape)
You may (heck, probably do) need that if you're hosting a Jenkins server for use by others. You don't need that if you're hosting it for yourself - your chances of conflict are infinitesimal, and you can solve them if you get them. So putting up with a lot of hassle to work around this problem isn't worth it for most installations. (Though the simple escaping of the branch name was tolerable enough)
twasink not due to naming collisions but for routing. In any case I think a better scheme will result that fits the "human readable" requirement.
I think I have found a way...
By changing cloudbees folders plugin we can have the on-disk file name != the url path segment name.
That way we can keep the on-disk filename using the current 2.0.x mangled names, but keep the urls using (mostly) the 1.x names...
I say (mostly) because we have to guard against a small subset of problematic names. Specifically:
"", "." and ".."
or any name that contains "/" / "?" / "#" / "["}} / {{"]"}} (plus for good measure because browsers try to be helpful, we will probably also have to guard against names containing "\"
All those names need to be "double" encoded. I'm hoping to use % encoding because that should retain the names mostly compatible with before
So a branch name like caracterÃstica/nuevo 1 (~ spanish for "feature/new 1") will be given a "Job name" of caracterÃstica%2Fnuevo 1 then all the nice friendly url encoding code will convert that name into the path segment caracter%C3%ADstica%252Fnuevo%201 which the browsers may "helpfully" display in the URL bar as caracterÃstica%2Fnuevo 1 or caracterÃstica%252Fnuevo%201 depending on how they feel
Need to write tests and then do some manual testing
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolderDescriptor.java
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
src/main/java/com/cloudbees/hudson/plugins/folder/relocate/RelocationAction.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/7a55e52e90a14fc80a9941f725eb50e3ab879bfa
Log:
JENKINS-41124 Provide a mechanism for a computed folder to mangle directory names
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/computed/ComputedFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/computed/FolderComputation.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/9d6e1198966b2f5e01fd39487678e015dbe0c083
Log:
JENKINS-41124 Found a side-effect where the constructor would have side-effects on-disk
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/442d254e443adcbb969477010e02e4eb0a4bbbe6
Log:
JENKINS-41124 Every implementation will need to protect in case of bad impls anyway
Compare: https://github.com/jenkinsci/cloudbees-folder-plugin/compare/7a55e52e90a1^...442d254e443a
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/71c15f052e9981263df407457263b624fe451b66
Log:
JENKINS-41124 Fix javadoc errors
Compare: https://github.com/jenkinsci/cloudbees-folder-plugin/compare/7a55e52e90a1^...71c15f052e99
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/computed/ComputedFolder.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/1d90bf76a58056792c37ee96948dbdc6904a3964
Log:
JENKINS-41124 Actually the super method needs to be first
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/Folder.java
src/main/java/com/cloudbees/hudson/plugins/folder/computed/ComputedFolder.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/9f4be16479e6b6e97e219531d3e7103a0ff096e1
Log:
JENKINS-41124 When using a ChildNameGenerator, record the name for new items too
Compare: https://github.com/jenkinsci/cloudbees-folder-plugin/compare/71c15f052e99...9f4be16479e6
I tried a recent snapshot of this change and it looked good. Even "exotic" branch names worked as expected by the acceptance test.
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolderDescriptor.java
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorAltTest.java
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorRecTest.java
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorAltTest/upgrade.zip
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorRecTest/upgrade.zip
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest/upgrade.zip
http://jenkins-ci.org/commit/cloudbees-folder-plugin/be909fdb4b7b07d3f9f3520e6e34601ad95ffeed
Log:
JENKINS-41124 Adding tests
- Also tests found a few very small holes, which are now fixed!
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/089eac109eddd62f62afd1cd53f5c8e854cebdee
Log:
JENKINS-41124 Noting JENKINS-41222 related future simplifications
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/c9730b16046b09d57e3e41902a37379f371b3757
Log:
JENKINS-41124 Fix the one failing test (I hope)
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/b9e2fa9e1d8adbd6ccfbd2cb77152704600aa5ae
Log:
JENKINS-41124 Ok, we just have to detect the filesystem normalization rules
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/8167384eb03dca5c8e25780319762502df8c7b70
Log:
JENKINS-41124 Forgot to create the probe file!
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest/upgrade.zip
http://jenkins-ci.org/commit/cloudbees-folder-plugin/1161c7cb95281d1fe90f379a25c84fdf3a4a680e
Log:
JENKINS-41124 Hopefully this makes the test FS portable
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/93e075a54da18f01b3c1336304eb1ddeea5e8768
Log:
JENKINS-41124 Remove normalization left in by mistake when trying to make the test deterministic on all File systems
- Unnecessary now that we detect the normalization scheme of the system under test
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/b2e6e88f51cf1bead3b57492b933a3c88c06a818
Log:
JENKINS-41124 Additional tracking of legacy name
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest/upgradeNFD.zip
http://jenkins-ci.org/commit/cloudbees-folder-plugin/ea7eb5d05fb9ad76775f42474be367492a5297dd
Log:
JENKINS-41124 Confirmed OS-X normalizes to NFC and Linux to NFD
So here is a second test set using NFD names so that if we end up on a magical filesystem that doesn't mess with the name encoding we will cover both variants.
With respect to the issue driving all of this:
- MultiBranch projects already store the name of the branch in unmolested form within the Branch object, so we only need to worry about OrganizationFolder's children.
- There are only two current OrganizationFolder navigators:
- GitHub which helpfully replaces any non-url safe characters with `-`, so will not be an issue
- BitBucket which also replaces any non-url safe characters with `-` (but without a tooltip giving advance notice), so will also not be an issue.
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolderDescriptor.java
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/e151a7bb9627f12b61b6e71ca574de5474b52f16
Log:
JENKINS-41124 Address code review comments
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
http://jenkins-ci.org/commit/cloudbees-folder-plugin/b633614b05d7b2a90b40342d5331da1db6deb5de
Log:
JENKINS-41124 Fix typos in Javadocs
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolderDescriptor.java
src/main/java/com/cloudbees/hudson/plugins/folder/ChildNameGenerator.java
src/main/java/com/cloudbees/hudson/plugins/folder/Folder.java
src/main/java/com/cloudbees/hudson/plugins/folder/computed/ComputedFolder.java
src/main/java/com/cloudbees/hudson/plugins/folder/computed/FolderComputation.java
src/main/java/com/cloudbees/hudson/plugins/folder/relocate/RelocationAction.java
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorAltTest.java
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorRecTest.java
src/test/java/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest.java
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorAltTest/upgrade.zip
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorRecTest/upgrade.zip
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest/upgrade.zip
src/test/resources/com/cloudbees/hudson/plugins/folder/ChildNameGeneratorTest/upgradeNFD.zip
http://jenkins-ci.org/commit/cloudbees-folder-plugin/c6097da511c6382d083abf99fad1cb3ed11bb29b
Log:
Merge pull request #82 from stephenc/jenkins-41124
JENKINS-41124 Provide a mechanism for a computed folder to mangle directory names
Compare: https://github.com/jenkinsci/cloudbees-folder-plugin/compare/152375c01d78...c6097da511c6
Code changed in jenkins
User: Stephen Connolly
Path:
pom.xml
src/main/java/jenkins/branch/Branch.java
src/main/java/jenkins/branch/MultiBranchProject.java
src/main/java/jenkins/branch/MultiBranchProjectDescriptor.java
src/main/java/jenkins/branch/NameEncoder.java
src/main/java/jenkins/branch/OrganizationFolder.java
src/test/java/integration/BrandingTest.java
src/test/java/integration/EventsTest.java
src/test/java/integration/MigrationTest.java
src/test/java/jenkins/branch/WorkspaceLocatorImplTest.java
http://jenkins-ci.org/commit/branch-api-plugin/1d254fad966168ad5dfff97c829fda458c917968
Log:
JENKINS-41124 Move name mangling support responsibility to AbstractFolder
- Needs more tests... like way more...
- [ ] Need a test that verifies after migration and then a restart that all is still as expected.
- [ ] Need a test that verifies after a migration and then a reload that all is still as expected.
- [ ] Need a test that verifies after a migration and thene a restart and then a reload that all is still as expected.
- [ ] Need a set of all those migration tests using the migration from a 2.0.0 pristine set of items
- [ ] Need a set of all those migration tests using the migration from a 1.x set of items that was migrated to 2.0.0 and then lands on this set
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/jenkins/branch/MultiBranchProjectFactory.java
src/main/java/jenkins/branch/NameEncoder.java
src/test/java/integration/harness/BasicMultiBranchProjectFactory.java
http://jenkins-ci.org/commit/branch-api-plugin/15561c5e7406c49d3b269f34a0426b146e757fef
Log:
JENKINS-41124 Forgot to escape the escape character itself (and forgot some files too)
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/jenkins/branch/MultiBranchProject.java
src/main/java/jenkins/branch/OrganizationFolder.java
http://jenkins-ci.org/commit/branch-api-plugin/89d7adebc0ed51784584cb6932487d48b439a9ca
Log:
JENKINS-41124 Forgot to return the match when we find it first time
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/jenkins/branch/OrganizationFolder.java
http://jenkins-ci.org/commit/branch-api-plugin/76db05c5c323c3597a14e2ce36fe0ea198110dac
Log:
JENKINS-41124 Findbugs catches a bug
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/jenkins/branch/MultiBranchProject.java
src/main/java/jenkins/branch/MultiBranchProjectDescriptor.java
src/main/java/jenkins/branch/OrganizationFolder.java
http://jenkins-ci.org/commit/branch-api-plugin/e59d1474cd8751668e9fd84edc85df4933801efe
Log:
JENKINS-41124 So it seems there are some bold side-effects going on in item constructors and we need to ensure those side effects take place in the correct directory
Code changed in jenkins
User: Stephen Connolly
Path:
pom.xml
src/main/java/jenkins/branch/MultiBranchProject.java
src/main/java/jenkins/branch/MultiBranchProjectDescriptor.java
src/main/java/jenkins/branch/OrganizationFolder.java
http://jenkins-ci.org/commit/branch-api-plugin/61e5af591751bfd81f25f4fb1fa30d9f9ad2e90d
Log:
JENKINS-41124 Pick up API changes in cloudbees-folder
Code changed in jenkins
User: Stephen Connolly
Path:
pom.xml
src/test/java/integration/MigrationTest.java
src/test/resources/integration/MigrationTest/nameMangling_2.zip
src/test/resources/integration/MigrationTest/nameMangling_2_folder_reload.zip
src/test/resources/integration/MigrationTest/nameMangling_2_full_reload.zip
src/test/resources/integration/MigrationTest/nameMangling_folder_reload.zip
src/test/resources/integration/MigrationTest/nameMangling_full_reload.zip
http://jenkins-ci.org/commit/branch-api-plugin/ec6ef005c4b525665163d39336483d240800e869
Log:
JENKINS-41124 Lots of data migration tests
Need the restart tests also, but this at least calms my fears
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/integration/MigrationTest.java
http://jenkins-ci.org/commit/branch-api-plugin/663cb3d060dbfb6aa38128a5805ff912ee65abfb
Log:
JENKINS-41124 Switch migration test to restartable jenkins rule
Code changed in jenkins
User: Stephen Connolly
Path:
src/test/java/integration/MigrationTest.java
http://jenkins-ci.org/commit/branch-api-plugin/60e82a905a990270394983eef61f9e2f06857c5c
Log:
JENKINS-41124 Add re-verification to all the migration tests after Jenkins restart
Code changed in jenkins
User: Stephen Connolly
Path:
pom.xml
src/main/java/jenkins/branch/MultiBranchProject.java
src/main/java/jenkins/branch/MultiBranchProjectDescriptor.java
src/main/java/jenkins/branch/OrganizationFolder.java
http://jenkins-ci.org/commit/branch-api-plugin/ba727fac801d6d47743277928447ca3c347a1185
Log:
JENKINS-41124 Integrates the fixed from cloudbees-folder
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/jenkins/branch/MultiBranchProjectFactory.java
src/main/java/jenkins/branch/NameEncoder.java
src/test/java/integration/BrandingTest.java
src/test/java/integration/MigrationTest.java
src/test/java/jenkins/branch/WorkspaceLocatorImplTest.java
http://jenkins-ci.org/commit/branch-api-plugin/32c5aba1102a2a8928a1decc17c1170bec0e2845
Log:
JENKINS-41124 Address code review comments
Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/jenkins/branch/MultiBranchProjectFactory.java
http://jenkins-ci.org/commit/branch-api-plugin/091997f77adfa37704f83584f153776a2a239cd7
Log:
JENKINS-41124 Typo in javadoc
Code changed in jenkins
User: Stephen Connolly
Path:
pom.xml
src/main/java/jenkins/branch/Branch.java
src/main/java/jenkins/branch/MultiBranchProject.java
src/main/java/jenkins/branch/MultiBranchProjectDescriptor.java
src/main/java/jenkins/branch/MultiBranchProjectFactory.java
src/main/java/jenkins/branch/NameEncoder.java
src/main/java/jenkins/branch/OrganizationFolder.java
src/test/java/integration/EventsTest.java
src/test/java/integration/MigrationTest.java
src/test/java/integration/harness/BasicMultiBranchProjectFactory.java
src/test/java/jenkins/branch/WorkspaceLocatorImplTest.java
src/test/resources/integration/MigrationTest/nameMangling_2.zip
src/test/resources/integration/MigrationTest/nameMangling_2_folder_reload.zip
src/test/resources/integration/MigrationTest/nameMangling_2_full_reload.zip
src/test/resources/integration/MigrationTest/nameMangling_folder_reload.zip
src/test/resources/integration/MigrationTest/nameMangling_full_reload.zip
http://jenkins-ci.org/commit/branch-api-plugin/05030c1c0a5a0811c562785d209698c22aee5a86
Log:
Merge pull request #72 from stephenc/jenkins-41124
JENKINS-41124 Move name mangling support responsibility to AbstractFolder
Compare: https://github.com/jenkinsci/branch-api-plugin/compare/228cd1a7209e...05030c1c0a5a
Code changed in jenkins
User: Stephen Connolly
Path:
pom.xml
src/main/java/jenkins/branch/MultiBranchProject.java
http://jenkins-ci.org/commit/branch-api-plugin/93e7fa149036ef63842924b5a3514209747efdc7
Log:
JENKINS-41124 Post-merge tidy up and pick up cloudbees-folder 5.17-beta-1
scm-api-2.0.2
git-2.6.4 or git-3.0.4
branch-api-2.0.2
bitbucket-branch-source-2.0.2
github-branch-source-2.0.1
cloudbees-folder-5.17
workflow-multibranch-2.11
This is also breaking my use of the S3BucketPublisher - It used to publish to S3 with a path prefix of (using the above) 'Foo/Bar/feature%2FBaz'.
It now publishes with 'Foo/Bar.qxyz123/feature-KEY.abcd12345ghij-Baz'. I could probably live with the suffix on the project name (though that sucks, it is at least consistent), but the mangling of the branch name is horrible, as it's non-deterministic.
At this point, I'm about to rollback to my backup and stick with the v1.0 version; notification templates were painful, but this is a problem that completely breaks my ops infrastructure.