繁体   English   中英

TFS 2018 XAML构建迁移

[英]TFS 2018 XAML build migration

我目前正在将XAML构建定义升级到新的构建系统。 已经消除了一些错误,但是现在我已无法分辨什么是错误的了。 我们在大多数构建过程中都使用PowerShell脚本,尽管服务器上所有必需的数据都可用,但是在运行构建时出现以下错误:

在此处输入图片说明

有谁知道会导致该错误的原因吗? 或者至少我应该在哪里检查?

提前致谢。

编辑:脚本准备了外部工具无法完成的构建配置,并且特定于我们的项目。 错误发生在$teamProjectCollection =...

Function Get-BuildNumberFromUri() {
<#
.SYNOPSIS
    Reads the build number from the current TFS build ($Env:BUILD_BUILDURI)
.DESCRIPTION
Reads the build number from the current TFS build ($Env:BUILD_BUILDURI)
.NOTES
    May fail if $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI or $env:BUILD_BUILDURI 
are not set
#>
[String] $CollectionUrl = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
[String] $BuildUrl = "$env:BUILD_BUILDURI"
if (-not $CollectionUrl -or -not $BuildUrl) {
    return "0"
}
[void[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client")
$teamProjectCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl)
$buildServer = $teamProjectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$buildDetail = $buildServer.GetBuild($BuildUrl)
$buildNumber = $buildDetail.BuildNumber
return $buildNumber

}

这是问题所在:

您正在使用新的构建系统。 您需要退后一步,并根据新构建系统的功能重新评估现有的脚本。

您具有用于检索内部版本号的大型PowerShell片段。 很棒,除了两件事:

  1. 它永远都行不通-SOAP对象模型对“新”(例如非XAML)构建不了解。 而是为他们提供了REST API。
  2. 您可以通过查看$env:BUILD_BUILDNUMBER变量来检索当前的内部版本号。 无需特殊代码。

在Team Foundation Server的早期版本中,客户端对象模型是在GAC中注册的,并且在运行XAML时由构建代理预先加载。 在新代理中,构建步骤独立于客户端对象模型。

您有两个选项可以找到客户端对象模型程序集:

还有一个更简单但官方不支持的选项:

不要使用$(Agent.ServerOMDirectory)。 对于任务作者而言,依赖与代理程序捆绑在一起的SDK是不安全的。 Agent.ServerOMDirectory是一个便利变量,它指向与代理捆绑在一起的最新SDK。 SDK可能会在不同版本之间进行重大的界面更改。 取决于代理随附的最新版本,将导致您的任务不可靠。

获取内部版本号

正在填充一个构建变量以在脚本中设置内部版本号,可以使用$env:Build.BuildNumber进行引用。

要设置内部版本号,请使用以下命令向控制台写一条特殊语句

$value = "$($env:Build.BuildNumber)_US`
Write-Host "##vso[build.updatebuildnumber]$Value"

或者,您可以从VSTS Variable Toolbox扩展中使用我的Set Variable任务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM