如何在Jenkins管道中将git标签推送到远程?
根据这里提到的官方教程,我正在为我的项目构建CI流 我的流程中有一些关键点:如何在Jenkins管道中将git标签推送到远程?,git,jenkins,continuous-integration,jenkins-pipeline,Git,Jenkins,Continuous Integration,Jenkins Pipeline,根据这里提到的官方教程,我正在为我的项目构建CI流 我的流程中有一些关键点: 我的计划是构建源代码,制作一个Git标记,并将标记推送到Jenkins服务器上的远程Git服务器 项目repo具有公共读取访问权限,并通过ssh协议从私有Git服务器中提取,该服务器承载一个GitLab服务 BlueOcean UI使用多分支管道构建CI流,并为我提供了一个ssh公钥,其ID为:jenkins生成的ssh密钥。我已将其提交到GitLab ssh设置 我的项目的根目录包含Jenkins文件 文件内容:
jenkins生成的ssh密钥
。我已将其提交到GitLab ssh设置pipeline {
agent { docker 'node:6' }
stages {
stage('Build') {
steps {
sh 'npm run test'
sh 'npm run build'
}
}
stage('Deploy') {
steps {
sshagent (credentials: ['jenkins-generated-ssh-key']) {
sh 'git push --tags'
}
}
}
}
}
“构建”阶段包含git提交和标记步骤。所有推标签的材料都准备好了
每次在执行“部署”阶段时,sshagent都会在推git标记之前被杀死
[Pipeline] sshagent
[ssh-agent] Using credentials fe (jenkins-generated-ssh-key)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine)
$ docker exec d2ba3af75c0e5826d3d00676ebba523117a541d9015ee77c74106862d2665025 env ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-dewb3KyPiizc/agent.130
SSH_AGENT_PID=134
$ docker exec d2ba3af75c0e5826d3d00676ebba523117a541d9015ee77c74106862d2665025 env SSH_AGENT_PID=134 SSH_AUTH_SOCK=/tmp/ssh-dewb3KyPiizc/agent.130 ssh-add /var/jenkins_home/workspace/achilles_master-GZG6BNOXJZHXAGELOPVE2O57MTLCFCSFEEMQVJOWKHCSAQDCMS4Q@tmp/private_key_838589255993535437.key
Identity added: /var/jenkins_home/workspace/achilles_master-GZG6BNOXJZHXAGELOPVE2O57MTLCFCSFEEMQVJOWKHCSAQDCMS4Q@tmp/private_key_838589255993535437.key (rsa w/o comment)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
$ docker exec d2ba3af75c0e5826d3d00676ebba523117a541d9015ee77c74106862d2665025 env SSH_AGENT_PID=134 SSH_AUTH_SOCK=/tmp/ssh-dewb3KyPiizc/agent.130 ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 134 killed;
[ssh-agent] Stopped.
[achilles_master-GZG6BNOXJZHXAGELOPVE2O57MTLCFCSFEEMQVJOWKHCSAQDCMS4Q] Running shell script
+ git push --tags
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我多次尝试调整Jenkins文件,发现如果步骤是“git push”或“ssh-T”git@git.xxx,它不会让ssh代理包装内部步骤。然后我的许可被拒绝了。ssh代理总是在进行ssh连接之前被终止,但通常会包装其他不需要ssh身份验证的步骤
主机密钥验证失败。致命:无法从远程
存储库
要解决上述错误,我们需要手动ssh一次或使用此参数
StrictHostKeyChecking=否
SSH代理停止可能只是在其他故障日志之前先记录。您的主机密钥验证失败,所以在处理其他极有可能出现的Git问题之前,可能首先会很有用。@mkobit非常感谢。解决主机验证问题后,我通过了所有步骤。如果您发布此评论和一些相关细节,我将接受。可能重复的请提供更多上下文,添加标签和格式错误和配置。