jenkinsci/bitbucket-branch-source-plugin

Use BitbucketServer repository browser for Data Center or Server

KalleOlaviNiemitalo opened this issue · 0 comments

Jenkins and plugins versions report

Environment
Jenkins: 2.375.3
OS: Windows Server 2012 R2 - 6.3
Java: 11.0.16.1 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
Office-365-Connector:4.18.0
analysis-model-api:10.23.1
ansicolor:1.0.2
antisamy-markup-formatter:155.v795fb_8702324
apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61
atlassian-bitbucket-server-integration:3.3.2
authentication-tokens:1.4
authorize-project:1.4.0
azure-ad:313.v14b_f37ff114d
azure-sdk:118.v43f74dd9ca_dc
basic-branch-build-strategies:71.vc1421f89888e
bitbucket-server-checks:1.0-SNAPSHOT (private-49d94041-kalle)
bootstrap5-api:5.2.1-3
bouncycastle-api:2.27
branch-api:2.1071.v1a_188a_562481
buildtriggerbadge:251.vdf6ef853f3f5
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
checks-api:1.8.1
cloudbees-bitbucket-branch-source:796.v6cb_1559e1673
cloudbees-disk-usage-simple:178.v1a_4d2f6359a_8
cloudbees-folder:6.800.v71307ca_b_986b
command-launcher:90.v669d7ccb_7c31
commons-httpclient3-api:3.1-3
commons-lang3-api:3.12.0-36.vd97de6465d5b_
commons-text-api:1.10.0-27.vb_fa_3896786a_7
compress-artifacts:98.vb_20f3c77ddf7
configuration-as-code:1569.vb_72405b_80249
copyartifact:686.v6fd37018d7c2
credentials:1214.v1de940103927
credentials-binding:523.vd859a_4b_122e6
data-tables-api:1.12.1-4
display-url-api:2.3.7
dtkit-api:3.0.2
durable-task:504.vb10d1ae5ba2f
echarts-api:5.4.0-1
extended-read-permission:3.2
fast-track:1.0.0
font-awesome-api:6.2.1-1
forensics-api:1.17.0
git:5.0.0
git-client:4.1.0
git-forensics:1.11.0
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
hudson-wsclean-plugin:1.0.8
instance-identity:142.v04572ca_5b_265
ionicons-api:31.v4757b_6987003
jackson2-api:2.14.2-319.v37853346a_229
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.8-1
jdk-tool:63.v62d2fd4b_4793
jersey2-api:2.38-1
jira:3.9
job-restrictions:0.8
jquery3-api:3.6.1-2
junit:1177.v90374a_ef4d09
lockable-resources:1123.v4002ee23c671
mailer:448.v5b_97805e3767
manage-permission:1.0.1
matrix-auth:3.1.6
matrix-project:785.v06b_7f47b_c631
metrics:4.2.13-420.vea_2f17932dd6
mina-sshd-api-common:2.9.2-50.va_0e1f42659a_a
mina-sshd-api-core:2.9.2-50.va_0e1f42659a_a
okhttp-api:4.10.0-125.v3593b_a_f8c97b_
pipeline-build-step:2.18.1
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-graph-view:156.v61fcf9a_7fb_e7
pipeline-groovy-lib:629.vb_5627b_ee2104
pipeline-input-step:466.v6d0a_5df34f81
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2118.v31fd5b_9944b_5
pipeline-model-definition:2.2118.v31fd5b_9944b_5
pipeline-model-extensions:2.2118.v31fd5b_9944b_5
pipeline-rest-api:2.31
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5
pipeline-stage-view:2.31
pipeline-utility-steps:2.15.0
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:2.20.0
popper2-api:2.11.6-2
prism-api:1.29.0-2
resource-disposer:0.21
scm-api:631.v9143df5b_e4a_a
script-security:1229.v4880b_b_e905a_6
sidebar-link:2.2.1
simple-queue:1.4.3
snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4
ssh-credentials:305.v8f4381501156
sshd:3.275.v9e17c10f2571
structs:324.va_f5d6774f3a_d
timestamper:1.22
token-macro:321.vd7cc1f2a_52c8
trilead-api:2.84.v72119de229b_7
variant:59.vf075fe829ccb
warnings-ng:9.23.1
workflow-aggregator:590.v6a_d052e5a_a_b_5
workflow-api:1208.v0cc7c6e0da_9e
workflow-basic-steps:1010.vf7a_b_98e847c1
workflow-cps:3618.v13db_a_21f0fcf
workflow-durable-task-step:1234.v019404b_3832a
workflow-job:1268.v6eb_e2ee1a_85a
workflow-multibranch:733.v109046189126
workflow-scm-step:400.v6b_89a_1317c9a_
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:839.v35e2736cfd5c
ws-cleanup:0.44
xunit:3.1.2

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows Server 2012 R2

Reproduction steps

  1. In Jenkins, create a pipeline project using Bitbucket Branch Source to reference a repository in Bitbucket Server.
  2. Build the project once.
  3. Push a commit to the repository. This commit must not be empty, i.e. it must change some files.
  4. Build the project again.
  5. With a Web browser, navigate to the latest build of the project.
  6. Click "Changes" in the left sidebar.
  7. The "Changes" screen shows the commit ID, author, and summary. Below those, there is a list of changed files. Click one of the file names.

Expected Results

The link goes to a Bitbucket Server web page that shows the content of the file as it was in that commit.

For example, if the repository is at https://bitbucket.example/projects/DEMO/repos/demo/, the commit ID is 72ffb7482a4eb26e891fead9c2b2544712d74f89, and the file path is demodir/demofile, then the URL should be https://bitbucket.example/projects/DEMO/repos/demo/browse/demodir/demofile?at=72ffb7482a4eb26e891fead9c2b2544712d74f89.

Actual Results

The link goes to a 404 "Oops, you've found a dead link" page.

For example, if the repository is at https://bitbucket.example/projects/DEMO/repos/demo/, the commit ID is 72ffb7482a4eb26e891fead9c2b2544712d74f89, and the file path is demodir/demofile, then the URL is https://bitbucket.example/projects/DEMO/repos/demo/history/demodir/demofile.

Anything else?

Bitbucket Branch Source always sets hudson.plugins.git.browser.BitbucketWeb as the repository browser, and prevents users from configuring a different repository browser:

withBrowser(new BitbucketWeb(endpoint.getRepositoryUrl(
scmSource.getRepoOwner(),
scmSource.getRepository()
)));

For on-premises Bitbucket Data Center or Server, it should use hudson.plugins.git.browser.BitbucketServer instead. That class was added in jenkinsci/git-plugin#1071 for JENKINS-39905, released in Git Plugin 4.7.2.

Alternatively, it could use hudson.plugins.git.browser.Stash, which also exists in earlier versions of the Git plugin and may even work better than hudson.plugins.git.browser.BitbucketServer for links to deleted files, but the "Stash" name might not be recognized by users.