Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Jenkins管道中将git标签推送到远程?_Git_Jenkins_Continuous Integration_Jenkins Pipeline - Fatal编程技术网

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

如何在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文件 文件内容:

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

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

  • 我的计划是构建源代码,制作一个Git标记,并将标记推送到Jenkins服务器上的远程Git服务器
  • 项目repo具有公共读取访问权限,并通过ssh协议从私有Git服务器中提取,该服务器承载一个GitLab服务
  • BlueOcean UI使用多分支管道构建CI流,并为我提供了一个ssh公钥,其ID为:
    jenkins生成的ssh密钥
    。我已将其提交到GitLab ssh设置
  • 我的项目的根目录包含Jenkins文件
  • 文件内容:

    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非常感谢。解决主机验证问题后,我通过了所有步骤。如果您发布此评论和一些相关细节,我将接受。可能重复的请提供更多上下文,添加标签和格式错误和配置。