【发布时间】:2020-08-16 00:20:32
【问题描述】:
我正在尝试做与here 中所做的类似的事情,但我在 Windows 服务器上运行 Jenkins 并尝试从 Jenkins 的凭据存储中传递凭据,这需要另一个帖子。
在上面帖子的 cmets 中,我查看了 this 帖子,现在我的管道中有这个:
withCredentials([sshUserPrivateKey(credentialsId:'ci', keyFileVariable:'GITHUB_KEY')]){
withEnv(["GIT_SSH_COMMAND=ssh -i $GIHUB_KEY -o StrictHostKeyChecking=no]){
bat script: 'git submodule update --init --recursive'
}
}
但是,当构建运行时,由于登录失败而出错:
using GIT_SSH to set credentials <credentials_description>
> C:\<git_install_path>\git.exe submodule update --init --recursive <submodule_name> # timeout=10
...
...
hudson.plugins.git.GitException: Command "C:\<git_install_path>\git.exe submodule update --init --recursive <submodule_name>" returned status code 1:
stdout:
stderr: Cloning into '<Jenkins job folder>'
Logon failed, use ctrl+c to cancel basic credential prompt
bash: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Username for '<git url>': No such file or directory
fatal: clone of '<submodule url>' into submodule path '<local submodule path>' failed
Failed to clone '<submodule>'. Retry scheduled
...
在调用git submodule 命令时,有没有办法从 Jenkins 传递这些凭据?或者我是否需要像在第一个链接的帖子中那样在环境块中设置GIT_SSH_COMMAND,并将私钥存储在构建框中的某个地方?
编辑: 我也尝试过使用结帐语法,但我得到相同的登录失败错误
checkout([
$class: 'GitSCM',
branches: [[name '*/<branch_name'>]],
doGenerateSubmoduleConfigurations: false,
extensions: [[
$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: true,
recursiveSubmodules: true,
reference: '',
trackingSubmodules: false
]],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId:'ci', url:'<git_url>']]
])
【问题讨论】:
-
奇怪的是,如果我使用 checkout 命令,代码的初始提取工作正常,但它在发生登录失败的子模块(凭据有效)上。
标签: git jenkins jenkins-pipeline