TFS2015构建定义Powershell错误

时间:2017-12-20 03:05:38

标签: git powershell tfs

我创建了一个powershell脚本,它作为构建定义的第一步运行,它获取最新代码并标记分支以及执行GitVersion.exe / updateassemblyinfo。

我现在遇到的问题是TFS构建定义创建了一个分离的头(分支?),每当我尝试执行git checkout master时,它在输出中显示为错误。

  

2017-12-20T02:59:28.3245551Z运行' git clean -fdx'在D:\ agent_work \ 87 \ s。

     

2017-12-20T02:59:28.3713306Z运行' git reset - hard HEAD'在D:\ agent_work \ 87 \ s。

     

2017-12-20T02:59:28.4337848Z HEAD现在是00382dd Dummy change2

     

2017-12-20T02:59:28.4337848Z开始获取...

     

2017-12-20T02:59:28.6209313Z将00382dd7601ab49b146240338e3f89e70aae2ece检出D:\ agent_work \ 87 \ s

     

2017-12-20T02:59:28.6677321Z在提交00382dd7601ab49b146240338e3f89e70aae2ece

已检出分支机构refs / heads / master for repository ABN      

2017-12-20T02:59:28.6677321Z commit = 00382dd7601ab49b146240338e3f89e70aae2ece

     

2017-12-20T02:59:28.6677321Z离开TfsGitSourceProvider.PrepareRepositoryAsync

     

2017-12-20T02:59:28.8081365Z正在运行的任务

     

2017-12-20T02:59:28.8237446Z启动任务:Powershell:Build.ps1

     

2017-12-20T02:59:28.8549329Z。 ' d:\ agent_work \ 87 \ S \ Build.ps1'

     

2017-12-20T02:59:28.8705393ZC:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command" try {[System.Security。 Cryptography.ProtectedData] | Out-Null} catch {Write-Verbose'添加组合:System.Security' ; Add-Type -AssemblyName' System.Security' ; [System.Security.Cryptography.ProtectedData] | Out-Null};调用-表达-Command([System.Text.Encoding] :: UTF8.GetString([System.Security.Cryptography.ProtectedData] ::撤消([System.Convert] :: FromBase64String(' AQAAANCMnd8BFdERjHoAwE / CL + sBAAAArGybdmeqjkeRrRCzDg34RQAAAAACAAAAAAADZgAAwAAAABAAAAARQNIZ8ZSSCdvKkC9ig9FQAAAAAASAAACgAAAAEAAAAA05pop9sZqolQMnXBaYCcEoAAAAJWiIi4dluseSGAh6baRpqKRCAen5vNpoXE1rso5mC6ionSeRDREhsRQAAAAulpIkem7g6hB4in0HmeadOg7cOw =='),[System.Convert] :: FromBase64String(' XRQnTZZ + 4fqW37oX7nUNSA =='),[System.Security.Cryptography.DataProtectionScope] :: CurrentUser))); if(!(Test-Path -LiteralPath变量:\ LastExitCode)){Write-Verbose'最后退出代码未设置。' } else {Write-Verbose(' $ LastExitCode:{0}' -f $ LastExitCode);退出$ LastExitCode}"

     

2017-12-20T02:59:28.8705393Z执行以下powershell脚本。 (workingFolder = D:\ agent_work \ 87 \ s)

     

2017-12-20T02:59:28.8705393Z D:\ agent_work \ 87 \ s \ Build.ps1

     

2017-12-20T02:59:30.1653526Z您的分支机构是最新的&origin; /'。

     

2017-12-20T02:59:30.2277683Z ## [错误]切换到分支机构'

     

2017-12-20T02:59:30.2277683Z已经是最新的。

     

2017-12-20T02:59:30.2277683Z成功

     

2017-12-20T02:59:30.2433610Z ## [错误]进程已完成,退出代码为0,并且已将1个错误写入错误流。

     

2017-12-20T02:59:30.2745493Z完成任务:PowerShell

     

2017-12-20T02:59:30.2745493Z ## [错误]任务PowerShell失败。这导致作业失败。查看任务的日志以获取更多详细信息。

Build output image

以下是发生错误的powershell脚本的一部分:

[CmdletBinding()]
param()
Push-Location $PSScriptRoot
& git fetch origin
& git checkout master
& git merge origin/master --ff-only
Pop-Location
Write-Host
Write-Host "Success" -ForegroundColor Green

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

I found my solution from here

  

由于git即使成功也会写入stderr(例如同步时拉取),这会处理这些情况并写出输出的第一行,这通常是你需要知道的