詹金斯 git checkout 代理不工作

Flo*_*jud 1 jenkins jenkins-pipeline

我的 github 存储库中的 Jenkins 文件用于 Jenkins Master/Slave 环境。我需要在远程 Jenkins 从服务器上执行测试命令。在我的声明式管道中,代理的调用方式如下:

stage("Testautomation") {
  agent { label 'test-device' }
    steps {
        bat '''
        @ECHO ON
        ECHO %WORKSPACE%
        ... '''
    }
}
Run Code Online (Sandbox Code Playgroud)

在 Jenkins 执行远程命令之前,它会开始从版本控制中签出。Jenkins Master 上的结帐没有问题并且工作正常。但在这个 Jenkins Slave 上我总是收到此错误消息。

using credential github-enterprise:...
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://...git # timeout=10
Fetching upstream changes from https://...git
 > git --version # timeout=10
using GIT_ASKPASS to set credentials GitHub Enterprise Access Token
 > git fetch --tags --force --progress --depth=1 -- https://...git +refs/heads/development:refs/remotes/origin/development # timeout=120
Checking out Revision ... (development)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f ...
Could not checkout ...
Run Code Online (Sandbox Code Playgroud)

Dib*_*tya 7

默认情况下,声明式管道对每个代理执行 SCM 签出。检查 Jenkins 从属设备上是否安装了 Git。

相反,如果您希望在 master 上签出代码而不是在代理上签出代码,请禁用指令中的默认签出options并使用scm checkout阶段内的步骤。

pipeline {
    agent { label 'master' }
    options {
        skipDefaultCheckout(true)
    }
    stages {
        stage('Build') {
            steps {
                checkout scm
                // do other stuff on master
            }
        }
        stage("Testautomation") {
            agent { label 'test-device' }
            steps {
                bat '''
                    @ECHO ON
                    ECHO %WORKSPACE%
                '''
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以进一步自定义结帐行为,如本答案/sf/answers/2960553431/中所述。