2016-12-01 3 views
0

Я пытаюсь создать шаг предварительной сборки с помощью powershell в одном из наших командных проектов, чтобы увеличить номер сборки для всех сборок/приложений в этом VS-решении. Это для TFS2015-update 2.Доступ к сборке TeamProjectCollection с этапа сборки с помощью PowerShell

Я нашел код примера здесь и там онлайн и собрал вместе то, что, как я думаю, будет работать. Я могу запустить скрипт powershell вручную на сервере TFS (аутентифицированный на сервере в качестве учетной записи Windows), и он отлично работает, но пока он не будет функционировать правильно в процессе сборки.

Вот пример кода, в котором я продолжаю получать свою ошибку. Она имеет отношение к аутентификации/подключение к серверу TFS:

$CollectionUrl=New-Object System.Uri("$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI") 
$BuildUrl="$env:BUILD_BUILDURI" 

# get the team project collection 
$TeamProjectCollection=[Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl) 
# get the build server 
$BuildServer=$TeamProjectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]) 

# get the build detail 
$BuildDetail=$BuildServer.GetBuild($BuildUrl) 

# get the build definition 
$BuildDefinition=$BuildDetail.BuildDefinition 

Там ошибки первым я получаю:

Exception calling "GetService" with "1" argument(s): "TF30063: You are not authorized to access http://servername/TPCName

Я попытался с помощью как выше вызова, чтобы получить TPC, и строитель за это и не работает.

$TeamProjectCollection=New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection($CollectionUrl) 

Так что я начал пытаться построить объект учетных данных, основываясь на моих учетные данные для входа на сервер и посмотреть, смогу ли я подключиться к TPC таким образом. Тем не менее не работает (на сервере или в процессе сборки), но другая ошибка:

$netCred = New-Object System.Net.NetworkCredential($username,$password) 
$basicCred = New-Object Microsoft.TeamFoundation.Client.BasicAuthCredential($netCred) 
$tfsCred = New-Object Microsoft.TeamFoundation.Client.TfsClientCredentials($basicCred) 

# get the team project collection 
$TeamProjectCollection=New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection($CollectionUrl, $tfsCred) 

Выдает исключение:

Exception calling "GetService" with "1" argument(s): "TF400324: Team Foundation services are not available from the server.

Я также пробовал мой лучший на изменение разрешения TFS за счет окон что служба TFS работает, чтобы убедиться, что проблем там нет. Я довольно уверен, что добавил его ко всем ролям/группам, в которых была моя личность, но все же сборка не была аутентифицирована.

Я в затруднении на этом этапе. Может ли кто-нибудь помочь мне выяснить, как правильно подключиться к серверу TFS, используя определенные учетные данные, или помочь мне настроить, какие разрешения включают учетную запись службы, личность, варианты конфигурации и т. Д .; необходимо получить доступ к командеProjectCollection.

+0

Какой построить систему вы используете? vNext или XAML? И согласно вашему описанию, вы хотите увеличить номер сборки, но сценарий powershell получает определение сборки. Какую функцию вы бы хотели достичь? –

ответ

0

Вам необходимо специально проинструктировать TFS/VSTS, чтобы позволить исполняющей сборке переходить к TFS/VSTS. Это защищает ваш сервер от вредоносных разработчиков, выходящих из скриптов сборки.

enter image description here

Вы должны увидеть опцию «включить Auth» в закладке Параметры сборки.

** Примечание: Вы должны использовать Task SDK при условии: https://github.com/Microsoft/vsts-task-lib

+0

Нужно ли мне использовать другой API, а затем тот, который я использую для этого? Я все равно получаю ту же ошибку после изменения конфигурации – Ruckus

+0

Да ... Вы должны использовать SDK Build Task: https://github.com/Microsoft/vsts-task-lib –

Смежные вопросы