ssh-add 使 Jenkins 管道作业失败
ssh-add make the Jenkins pipline job to fail
Jenkins (2.162),更新模块。我需要为货物构建添加私有 github 依赖项。所以,我需要在 cargo build
之前将 SSH 密钥存储到 Jenkins 容器中。
我做到了:
stage('Build') {
steps{
script {
dir('api'){
withCredentials([string(credentialsId: 'GitKeyText', variable: 'ID_RSA')]) {
sh '''
set +x
eval `ssh-agent -s`
mkdir ~/.ssh
echo ${ID_RSA} >~/.ssh/id_rsa
chmod go-r ~/.ssh/id_rsa
ssh-add
cargo build
'''
}
}
input message: "wait"
}
}
}
一切看起来都不错,并且此命令序列在 docker 容器内手动运行良好。但是,Jenkins 作业在 ssh-add
失败,没有任何错误消息。 Jenkins 控制台日志末尾 ERROR: script returned exit code 1
。
添加01:
我在代码中添加了 echo 注释,并将 set +x
更改为 set -x
ssh-add
没有输出(控制台输出)
.....
+ echo before ssh-add
before ssh-add
+ ssh-add
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // script
Post stage
.....
我用了Jenkins SSH Agent Plugin。
所有工作都按预期进行。
script {
dir('contract_api'){
sshagent(['GitSSHcred']) {
sh 'cargo build'
}
}
}
Jenkins (2.162),更新模块。我需要为货物构建添加私有 github 依赖项。所以,我需要在 cargo build
之前将 SSH 密钥存储到 Jenkins 容器中。
我做到了:
stage('Build') {
steps{
script {
dir('api'){
withCredentials([string(credentialsId: 'GitKeyText', variable: 'ID_RSA')]) {
sh '''
set +x
eval `ssh-agent -s`
mkdir ~/.ssh
echo ${ID_RSA} >~/.ssh/id_rsa
chmod go-r ~/.ssh/id_rsa
ssh-add
cargo build
'''
}
}
input message: "wait"
}
}
}
一切看起来都不错,并且此命令序列在 docker 容器内手动运行良好。但是,Jenkins 作业在 ssh-add
失败,没有任何错误消息。 Jenkins 控制台日志末尾 ERROR: script returned exit code 1
。
添加01:
我在代码中添加了 echo 注释,并将 set +x
更改为 set -x
ssh-add
没有输出(控制台输出)
.....
+ echo before ssh-add
before ssh-add
+ ssh-add
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // script
Post stage
.....
我用了Jenkins SSH Agent Plugin。 所有工作都按预期进行。
script {
dir('contract_api'){
sshagent(['GitSSHcred']) {
sh 'cargo build'
}
}
}