Git在Jenkins multibranch管道中提交和推送问题

时间:2017-01-24 11:38:39

标签: .net git jenkins-pipeline multibranch-pipeline

我正在使用Jenkins的多分支管道来构建.Net应用程序并在Windows服务器上使用msbuild创建ms测试结果。我为此写了一个jenkins文件。

现在问题是,我需要提交并将mstest结果文件推送到git上的同一分支。我试过在jenkinsfile中使用'bat'做同样的事情,但它给了我Detached head state。以下是jenkinsfile配置: -

node ('windows') {


stage 'Checkout'

        checkout scm

    stage 'Build'

         bat '"Path to MSBuild.exe" ProjectFile.proj'

         bat '"Path to git.exe" add mstest/output.trx'
         bat '"Path to git.exe" commit -am "adding test results"'
         bat '"Path to git.exe" push origin Develop'
}

1 个答案:

答案 0 :(得分:0)

调用checkout scm总是检出一个特定的提交(从加载Jenkinsfile开始就对分支进行最新提交)并导致分离的HEAD状态。

如果要签出特定分支并稍后提交更改,可以直接使用git,在您的情况下可能看起来像这样:

bat "<path-to-git.exe> checkout ${env.BRANCH_NAME}"

显然,如果其他人在结账后推送到该分支,但在jenkins推送测试结果之前,这种方法可能会导致意外行为。 注意,env.BRANCH_NAME是来自Jenkins multibranch项目的构建变量,它为您提供运行管道的分支的名称。