我正在使用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'
}
答案 0 :(得分:0)
调用checkout scm
总是检出一个特定的提交(从加载Jenkinsfile
开始就对分支进行最新提交)并导致分离的HEAD状态。
如果要签出特定分支并稍后提交更改,可以直接使用git,在您的情况下可能看起来像这样:
bat "<path-to-git.exe> checkout ${env.BRANCH_NAME}"
显然,如果其他人在结账后推送到该分支,但在jenkins推送测试结果之前,这种方法可能会导致意外行为。
注意,env.BRANCH_NAME
是来自Jenkins multibranch项目的构建变量,它为您提供运行管道的分支的名称。