Миграция сборки TFS 2018 XAML - PullRequest
0 голосов
/ 23 мая 2018

В настоящее время я обновляю наши определения сборки XAML до новой системы сборки.Уже раздавили несколько ошибок, но сейчас я нахожусь в такой точке, когда уже не могу сказать, что может быть не так.Мы используем сценарии PowerShell для большей части процесса сборки, и хотя все необходимые данные доступны на сервере, я получаю следующую ошибку при запуске сборки:

enter image description here

Кто-нибудь знает, что может вызвать эту ошибку?Или, по крайней мере, где я должен проверить?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Скрипт готовит конфигурацию сборки, которая не может быть выполнена внешними инструментами и специфична для нашегопроект.Ошибка происходит на линии $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

}

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Вот проблема:

Вы используете новую систему сборки.Вы должны сделать шаг назад и переоценить имеющиеся у вас сценарии в контексте возможностей новой системы сборки.

У вас есть этот большой фрагмент PowerShell, который получает номер сборки.Это замечательно, за исключением двух вещей:

  1. Это никогда не сработает - объектная модель SOAP не осведомлена о «новых» (например, не-XAML) сборках.Вместо этого для них есть REST API.
  2. Вы можете получить текущий номер сборки, посмотрев на переменную $env:BUILD_BUILDNUMBER.Специальный код не требуется.
0 голосов
/ 23 мая 2018

В предыдущих версиях 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"

В качестве альтернативы вы можете использовать мою Set Variable задача из расширения VSTS Variable Toolbox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...