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

Jenkins多任务Job-Full调用Copy_Configs_Pipeline时Git权限报错128

解决方案:Jenkins上游任务调用子Pipeline时Git公钥权限拒绝问题

1. 确保上游任务传递正确的凭证

当Job-Full调用Copy_Configs_Pipeline时,必须显式传递Git所需的SSH凭证,不能依赖子任务的默认配置:

  • 如果Job-Full是自由风格项目,在调用子任务的步骤中勾选"传递凭证"选项,并指定对应的Git SSH凭证ID。
  • 如果Job-Full是Pipeline项目,调用子任务时要在build步骤中声明凭证:
    build job: 'Copy_Configs_Pipeline', 
          parameters: [], 
          wait: true, 
          propagate: true, 
          credentialsId: '你的Git SSH凭证ID'
    

2. 子Pipeline明确绑定Git凭证

单独运行正常不代表被调用时上下文一致,必须在子Pipeline的Git拉取步骤中硬指定凭证ID,避免依赖节点全局密钥:

checkout([
  $class: 'GitSCM',
  branches: [[name: '*/main']],
  userRemoteConfigs: [[
    url: 'git@你的仓库地址',
    credentialsId: '你的Git SSH凭证ID'
  ]]
])

或者用withCredentials包裹Git操作,强制加载指定凭证:

withCredentials([sshUserPrivateKey(credentialsId: '你的Git SSH凭证ID', keyFileVariable: 'SSH_KEY')]) {
  sh 'export GIT_SSH_COMMAND="ssh -i $SSH_KEY" && git clone git@你的仓库地址'
}

3. 验证节点临时目录权限

Jenkins拉取Git代码时会在临时目录生成SSH密钥文件,确保Jenkins运行用户对临时目录(如/tmp或工作目录)有读写权限。可以在子Pipeline开头加调试步骤确认:

sh 'whoami && ls -ld /tmp && ls -ld $WORKSPACE'

如果权限不足,调整目录权限,或在Jenkins全局配置中修改临时目录路径到有权限的目录。

4. 调试SSH凭证加载状态

在子Pipeline中添加SSH测试步骤,确认凭证是否正确加载:

sh 'ssh -T git@你的仓库地址'

如果测试失败,检查:

  • SSH凭证的私钥是否无密码(或凭证中已配置密码)
  • 公钥已添加到Git仓库的权限列表
  • SSH_AUTH_SOCK环境变量是否存在(凭证绑定成功的标志)

5. 统一任务运行节点

如果Job-Full和Copy_Configs_Pipeline指定了不同的运行节点,节点间的凭证配置可能不一致。要么让两个任务使用同一节点,要么确保子任务的节点已配置好对应的Git凭证。

内容的提问来源于stack exchange,提问作者Dmytro Ivanov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:13:31