.net Jenkins多分支管道中的Git提交和推送问题

.net Jenkins多分支管道中的Git提交和推送问题,.net,git,jenkins-pipeline,multibranch-pipeline,.net,Git,Jenkins Pipeline,Multibranch Pipeline,我正在Jenkins开发一个多分支管道,用于在windows服务器上使用msbuild构建.Net应用程序和创建ms测试结果。我也写了一份詹金斯档案 现在的问题是,我需要提交mstest结果文件并将其推送到git上的同一个分支。我曾尝试在Jenkins文件中使用“bat”来做同样的事情,但它给了我分离的头部状态。以下是文件配置:- node ('windows') { stage 'Checkout' checkout scm stage 'Build'

我正在Jenkins开发一个多分支管道,用于在windows服务器上使用msbuild构建.Net应用程序和创建ms测试结果。我也写了一份詹金斯档案

现在的问题是,我需要提交mstest结果文件并将其推送到git上的同一个分支。我曾尝试在Jenkins文件中使用“bat”来做同样的事情,但它给了我
分离的头部状态
。以下是文件配置:-

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'
}

调用
checkout scm
始终签出特定的提交(从加载
Jenkinsfile
时起分支上的最新提交),并导致分离头状态

如果您想签出一个特定的分支,然后提交对它的更改,您可以直接使用git,在您的情况下,它可能如下所示:

bat“checkout${env.BRANCH\u NAME}”

显然,如果其他人在签出后推送到该分支,但在jenkins推送到测试结果之前,这种方法可能会导致意外行为。 请注意,
env.BRANCH\u NAME
是Jenkins multibranch项目中的一个构建变量,它为您提供管道正在运行的分支的名称