0

我正在 Jenkins 中开发一个多分支管道,用于构建 .Net 应用程序并在 Windows 服务器上使用 msbuild 创建 ms 测试结果。我为此写了一个jenkinsfile。

现在的问题是,我需要提交 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'
}
4

1 回答 1

0

该调用checkout scm始终检查特定提交(从Jenkinsfile加载时分支上的最新提交)并导致分离的 HEAD 状态。

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

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

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

于 2017-01-24T11:52:51.437 回答