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步骤报告失败但没有错误