Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SCM fetch fails due to neglected port of bitbucket server #813

Open
schorfi opened this issue Feb 21, 2024 · 3 comments
Open

SCM fetch fails due to neglected port of bitbucket server #813

schorfi opened this issue Feb 21, 2024 · 3 comments
Labels

Comments

@schorfi
Copy link

schorfi commented Feb 21, 2024

Jenkins and plugins versions report

Environment
Jenkins: 2.426.3
OS: Linux - 6.2.0-1018-aws
Java: 17.0.9 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ant:497.v94e7d9fffa_b_9
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
atlassian-bitbucket-server-integration:4.0.0
authentication-tokens:1.53.v1c90fd9191a_b_
bootstrap5-api:5.3.2-3
bouncycastle-api:2.30.1.77-225.v26ea_c9455fd9
branch-api:2.1148.vce12cfcdf090
build-timeout:1.32
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.0.2
cloudbees-bitbucket-branch-source:874.v659a_b_70f5e69
cloudbees-folder:6.858.v898218f3609d
commons-lang3-api:3.13.0-62.v7d18e55f51e2
commons-text-api:1.11.0-95.v22a_d30ee5d36
credentials:1319.v7eb_51b_3a_c97b_
credentials-binding:657.v2b_19db_7d6e6d
display-url-api:2.200.vb_9327d658781
durable-task:550.v0930093c4b_a_6
echarts-api:5.4.3-2
email-ext:2.104
font-awesome-api:6.5.1-2
git:5.2.1
git-client:4.6.0
github:1.38.0
github-api:1.318-461.v7a_c09c9fa_d63
github-branch-source:1772.va_69eda_d018d4
gradle:2.10
gson-api:2.10.1-15.v0d99f670e0a_7
handy-uri-templates-2-api:2.1.8-30.v7e777411b_148
instance-identity:185.v303dc7c645f9
ionicons-api:56.v1b_1c8c49374e
jackson2-api:2.16.1-373.ve709c6871598
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.9-1
jjwt-api:0.11.5-77.v646c772fddb_0
joda-time-api:2.12.7-29.v5a_b_e3a_82269a_
jquery3-api:3.7.1-1
json-path-api:2.9.0-33.v2527142f2e1d
junit:1259.v65ffcef24a_88
ldap:711.vb_d1a_491714dc
mailer:463.vedf8358e006b_
matrix-auth:3.2.1
matrix-project:822.824.v14451b_c0fd42
mina-sshd-api-common:2.12.0-90.v9f7fb_9fa_3d3b_
mina-sshd-api-core:2.12.0-90.v9f7fb_9fa_3d3b_
okhttp-api:4.11.0-172.vda_da_1feeb_c6e
pam-auth:1.10
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-github-lib:42.v0739460cda_c4
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-groovy-lib:704.vc58b_8890a_384
pipeline-input-step:477.v339683a_8d55e
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2175.v76a_fff0a_2618
pipeline-model-definition:2.2175.v76a_fff0a_2618
pipeline-model-extensions:2.2175.v76a_fff0a_2618
pipeline-rest-api:2.34
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2175.v76a_fff0a_2618
pipeline-stage-view:2.34
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.8.0
resource-disposer:0.23
scm-api:683.vb_16722fb_b_80b_
script-security:1326.vdb_c154de8669
snakeyaml-api:2.2-111.vc6598e30cc65
sonar:2.17.1
ssh-credentials:308.ve4497b_ccd8f4
ssh-slaves:2.948.vb_8050d697fec
structs:337.v1b_04ea_4df7c8
timestamper:1.26
token-macro:400.v35420b_922dcb_
trilead-api:2.133.vfb_8a_7b_9c5dd1
variant:60.v7290fc0eb_b_cd
workflow-aggregator:596.v8c21c963d92d
workflow-api:1291.v51fd2a_625da_7
workflow-basic-steps:1042.ve7b_140c4a_e0c
workflow-cps:3867.v535458ce43fd
workflow-durable-task-step:1331.vc8c2fed35334
workflow-job:1385.vb_58b_86ea_fff1
workflow-multibranch:773.vc4fe1378f1d5
workflow-scm-step:415.v434365564324
workflow-step-api:657.v03b_e8115821b_
workflow-support:865.v43e78cc44e0d
ws-cleanup:0.45

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

see above

Reproduction steps

  1. install jenkins and that plugin (my case: docker container)
  2. configure jenkins to use bitbucket endpoint (bitbucket server) with non-default port
    1.1 e.g. https://your.bitbucketserver.com:9443/
  3. setup multibranch pipeline
    2.1 using bitbucket as your branch source
    2.2 select your configured server and credentials
    2.3 see success of that connection by finding and selecting the project/owner and the repo-names
    2.4 save your changes
  4. trigger build pipeline
  5. observe that each branch SCM checkout

Expected Results

successful branch checkouts in step 4
fetch from same URL as configured in jenkins and used for branch detection

4.1 logs: git config remote.origin.url https://your.bitbucketserver.com:9443/scm/yourproject/yourrepo.git # timeout=10

Actual Results

step
4. observe that each branch SCM checkout times out
4.1 logs: git config remote.origin.url https://your.bitbucketserver.com/scm/yourproject/yourrepo.git # timeout=10

see missing sample port :9443 above!

Anything else?

please support HTTP access tokens for repositories ;)

Are you interested in contributing a fix?

No response

@schorfi schorfi added the bug label Feb 21, 2024
@schorfi schorfi changed the title SCM fetch fails due to missing post of bitbucket server SCM fetch fails due to neglected port of bitbucket server Feb 21, 2024
@andrey-fomin
Copy link
Contributor

andrey-fomin commented Feb 25, 2024

For local testing I use Bitbucket on https://bitbucket-primary.local:7990/bitbucket.
I don't see any issues with port. Please can you check what clone link is returned by bitbucket API?

https://developer.atlassian.com/server/bitbucket/rest/v818/api-group-project/#api-api-latest-projects-projectkey-repos-repositoryslug-get

For example https://bitbucket-primary.local:7990/bitbucket/rest/api/latest/projects/PROJECT_1/repos/rep_1

{
  ...
  "links": {
    "clone": [
      {
        "href": "ssh://git@bitbucket-primary.local:7999/project_1/rep_1.git",
        "name": "ssh"
      },
      {
        "href": "https://bitbucket-primary.local:7990/bitbucket/scm/project_1/rep_1.git",
        "name": "http"
      }
    ],
  }
  ...
}

@schorfi
Copy link
Author

schorfi commented Feb 26, 2024

@andrey-fomin thank you for picking this up

I see where you are heading to,
instead of using the "Instance URL" or "Server URL" for the git config repo, it falls back to the clone URLs.
This becomes interesting now, as the server URL is not directly reachable for the Jenkins server/host. It requires an additional hop to bridge to a different network, where one network's routing is not in my control. This hop is kind of a proxy (e.g. load balancer whatever)

  "links": {
    "clone": [
      {
        "href": "ssh://git@my.bitbucketserver.com:7999/myProject/myRepo.git",
        "name": "ssh"
      },
      {
        "href": "https://my.bitbucketserver.com/bitbucket/scm/myProject/myRepo.git",
        "name": "http"
      }
    ],
  }
}

@andrey-fomin
Copy link
Contributor

Ok. Then it means that clone links should not be used at all. The repository clone link should be constructed by bitbucket address, project name and repo name.
I believe the same problem is also applicable to SSH if ssh tunnel is used.

And yes before #796 http clone links from API response was not used. There was a lot of code to handle them but finally http clone link was just constructed by server address, project and repo name.

Then I have question to maintainers. What is the better way to fix this problem. I see following approaches

  1. Don't use http clone link from API for primary bitbucket instance. It can help to handle http reverse proxies. But I don't understand what to do with SSH tunnels in such case. I believe http and ssh protocols should be handled in the same way.
  2. Provide extra configuration parameters for Bitbucket Server in System settings.
    • Generate http clone link using server url - boolean parameter. If set to true then don't use http clone link from API but generate it. Not compatible with mirroring.
    • SSH server url- optional string parameter. If it's not empty then don't use ssh clone link from API but generate it. Not compatible with mirroring.

@lifeofguenter @raul-arabaolaza

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants