You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线Checkout Bitbucket分支时远程仓库拉取报错

问题描述

我是Jenkins初学者,尝试创建流水线实现从Jenkins端拉取Bitbucket私有仓库代码、安装依赖并完成构建的流程,但在第一步Checkout仓库分支环节就遇到问题。我已完成凭证配置与SSH链接设置,具体报错信息如下:

The recommended git tool is: NONE
using credential 02cb4299-3a20-424f-a541-1771e5b2e0b9
C:\Users\ahsan.alam\AppData\Local\Programs\Git\bin\git.exe rev-parse --resolve-git-dir C:\Windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\SCM-Pipline\.git # timeout=10
Fetching changes from the remote Git repository
C:\Users\ahsan.alam\AppData\Local\Programs\Git\bin\git.exe config remote.origin.url ssh:///git@bitbucket.org:Arsalanakhtar123/etisalat-jenkins.git/ # timeout=10
Fetching upstream changes from ssh:///git@bitbucket.org:Arsalanakhtar123/etisalat-jenkins.git/
C:\Users\ahsan.alam\AppData\Local\Programs\Git\bin\git.exe --version # timeout=10
git --version # 'git version 2.37.0.windows.1'
C:\Users\ahsan.alam\AppData\Local\Programs\Git\bin\git.exe fetch --tags --force --progress -- ssh:///git@bitbucket.org:Arsalanakhtar123/etisalat-jenkins.git/ +refs/heads/*:refs/remotes/origin/* # timeout=10
ERROR: Error fetching remote repo 'origin'

当前使用的流水线配置代码如下:

pipeline {
 agent any
  stages {
  stage('Git Checkout') {
  steps { 
    git branch: 'master',
        credentialsId: '<credentialIdsHere>', // 已替换为实际凭证ID
        url: 'ssh://git@bitbucket.org:company/repo.git/' // 已替换为实际仓库地址
   }
  }
 }
}

我已在Jenkins配置中指定git.exe路径,相关配置截图:
Jenkins Git路径配置截图

故障原因与修复方案

核心问题:SSH仓库地址格式错误

从报错日志可以看到,Jenkins实际调用时使用的远程仓库地址为ssh:///git@bitbucket.org:Arsalanakhtar123/etisalat-jenkins.git/,协议段出现3个斜杠,属于非法Git SSH地址格式。
Git的SSH地址仅支持两种合法写法,二者不能混写:

  • SCP风格(Bitbucket默认推荐写法):git@bitbucket.org:Arsalanakhtar123/etisalat-jenkins.git,注意该写法前面不能加ssh://前缀
  • 标准URL风格:ssh://git@bitbucket.org/Arsalanakhtar123/etisalat-jenkins.git,注意域名和仓库路径之间用斜杠/分隔,不能用冒号:

你当前配置中填写的URL为ssh://git@bitbucket.org:company/repo.git/,属于两种格式混写:添加了ssh://前缀的同时,域名后仍使用冒号分隔路径,Git解析时会错误补出第三个斜杠,将地址识别为本地路径,最终导致拉取失败。另外仓库地址末尾不要加多余斜杠。

其他需校验的配置项

  • 确认Jenkins中添加的凭证类型为SSH Username with private key,录入的私钥和你配置在Bitbucket仓库部署公钥列表中的公钥是匹配的密钥对
  • Windows环境下如果Jenkins以系统服务形式运行,要先切换到Jenkins服务的运行账号,手动在命令行执行一次对目标仓库的git fetch操作,自动录入Bitbucket的host指纹到known_hosts文件,避免首次连接的host校验拦截
  • 确认Jenkins服务运行账号有权限访问你配置的Git安装路径

修正后的Checkout配置参考

pipeline {
 agent any
  stages {
  stage('Git Checkout') {
  steps { 
    git branch: 'master',
        credentialsId: '替换为你实际的凭证ID',
        // 二选一即可,不要混写
        url: 'git@bitbucket.org:Arsalanakhtar123/etisalat-jenkins.git'
        // url: 'ssh://git@bitbucket.org/Arsalanakhtar123/etisalat-jenkins.git'
   }
  }
 }
}

内容的提问来源于stack exchange,提问作者Ahsan Alam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:39:17