.net Jenkins多分支管道中的Git提交和推送问题
我正在Jenkins开发一个多分支管道,用于在windows服务器上使用msbuild构建.Net应用程序和创建ms测试结果。我也写了一份詹金斯档案 现在的问题是,我需要提交mstest结果文件并将其推送到git上的同一个分支。我曾尝试在Jenkins文件中使用“bat”来做同样的事情,但它给了我.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'
分离的头部状态
。以下是文件配置:-
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项目中的一个构建变量,它为您提供管道正在运行的分支的名称