TFS2015 构建定义 Powershell 错误

Posted

技术标签:

【中文标题】TFS2015 构建定义 Powershell 错误【英文标题】:TFS2015 Build Definition Powershell error 【发布时间】:2018-06-02 13:14:54 【问题描述】:

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

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

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

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

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 时签出存储库 ABN 的分支 refs/heads/master

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 'Adding assemly: System.Security' ; Add-Type -AssemblyName 'System.Security' ; [System.Security.Cryptography.ProtectedData] | Out-Null ; Invoke-Expression -命令([System.Text.Encoding] :: UTF8.GetString([System.Security.Cryptography.ProtectedData] ::撤消([System.Convert] :: FromBase64String( 'AQAAANCMnd8BFdERjHoAwE / CL + sBAAAArGybdmeqjkeRrRCzDg34RQAAAAACAAAAAAADZgAAwAAAABAAAAARQNIZ8ZSSCdvKkC9ig9FQAAAAAASAAACgAAAAEAAAAA05pop9sZqolQMnXBaYCcEoAAAAJWiIi4dluseSGAh6baRpqKRCAen5vNpoXE1rso5mC6ionSeRDREhsRQAAAAulpIkem7g6hB4in0HmeadOg7cOw =='),[系统.Convert]::FromBase64String('XRQnTZZ+4fqW37oX7nUNSA=='), [System.Security.Cryptography.DataProtectionScope]::CurrentUser))) ; if (!(Test-Path -LiteralPath variable:\LastExitCode)) Write-详细的'拉斯t 退出代码未设置。 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/master'。

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

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

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

2017-12-20T02:59:30.2433610Z ##[error]进程完成,退出代码为 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】:

I found my solution from here

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

【讨论】:

以上是关于TFS2015 构建定义 Powershell 错误的主要内容,如果未能解决你的问题,请参考以下文章

TFS 构建和 Powershell:如何访问预定义的构建变量

TFS中的Robocopy构建PowerShell步骤报告失败但没有错误

更新团队基础 2015 API 中的构建定义

TFS 构建定义将构建定义转换为脚本或版本

TFS 构建通过 REST API 和 PowerShell 发布测试结果 TRX

创建后无法在构建/部署定义 (vnext) 中选择 TFS 2015 机器组