gpt4 book ai didi

git - 如何在 Jenkins 管道中将 git 标签推送到远程?

转载 作者:行者123 更新时间:2023-12-04 10:35:17 25 4
gpt4 key购买 nike

根据此处提到的官方教程,我正在为我的项目构建 CI 流程

Build a Node.js and React app with npm .

我的流程中有一些关键点:

  1. 我对该流程的计划是构建源代码,制作 Git 标签,然后将标签推送到 Jenkins 服务器上的远程 Git 服务器。
  2. 项目 repo 具有公共(public)读取权限,并通过 ssh 协议(protocol)从私有(private) Git 服务器 pull ,该服务器托管 GitLab 服务。
  3. BlueOcean UI 使用 Multibranch Pipeline 构建了 CI 流,并为我提供了一个 ID 为:jenkins-generated-ssh-key 的 ssh 公钥。我已将其提交给 GitLab ssh 设置。
  4. 我项目的根目录包含 Jenkinsfile。

文件内容:

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.

我已经多次尝试调整 Jenkinsfile,我发现如果步骤是 'git push' 或 'ssh -T git@git.xxx',它不会让 ssh-agent 包裹内部步骤。然后我得到拒绝的许可。 ssh-agent 总是在进行 ssh 连接之前被杀死,但通常会包装其他不需要 ssh 身份验证的步骤。

最佳答案

Host key verification failed.fatal: Could not read from remote repository.

要解决上面的错误,我们需要手动ssh一次或者使用这个参数

StrictHostKeyChecking=no

关于git - 如何在 Jenkins 管道中将 git 标签推送到远程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com