簡體   English   中英

如何在 Jenkins 管道中將 git 標簽推送到遠程?

[英]How to push git tags to remote in Jenkins pipeline?

根據這里提到的官方教程,我正在為我的項目構建 CI 流程

使用 npm 構建 Node.js 和 React 應用程序

我的流程中有一些關鍵點:

  1. 我對這個流程的計划是構建源代碼,制作一個 Git 標簽,然后將標簽推送到 Jenkins 服務器上的遠程 Git 服務器。
  2. 項目 repo 具有公共讀取訪問權限,並通過 ssh 協議從私有 Git 服務器拉取,服務器托管 GitLab 服務。
  3. BlueOcean UI 使用 Multibranch Pipeline 構建了 CI 流程,並為我提供了一個 ssh 公鑰,其 ID 為: jenkins-generated-ssh-key 我已將其提交給 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 身份驗證。

主機密鑰驗證失敗。致命:無法從遠程存儲庫讀取。

要解決上面的錯誤,我們需要手動ssh一次或者使用這個參數

StrictHostKeyChecking=no

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM