2016-12-01 33 views
0

我试图在我们的团队项目之一中使用PowerShell创建预构建步骤,以增加该VS解决方案中所有程序集/应用程序的构建编号。这是为TFS2015更新2.从PowerShell的构建步骤访问TFS TeamProjectCollection

我发现了一些示例代码在这里和那里在线,并拼凑在一起,我想象会工作。我可以在TFS服务器上手动运行powershell脚本(以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权限的Windows帐户TFS服务运行以确保那里没有问题。我很确定我将它添加到了我的身份所在的所有角色/组中,但仍然无法验证身份。

在这一点上我很茫然。有人可以帮助我弄清楚如何使用定义的凭证正确连接到TFS服务器,或帮助我调整服务帐户,身份,配置选择等的权限;需要访问teamProjectCollection。

+0

您使用哪种构建系统? vNext或XAML?根据您的描述,您希望增加内部版本号,但是powershell脚本正在获取构建定义。你想达到什么功能? –

回答

0

您需要特别指示TFS/VSTS允许正在执行的构建回调到TFS/VSTS。这可以保护您的服务器免遭恶意开发者退出构建脚本

enter image description here

你应该看到在你构建的选项选项卡“启用身份验证”选项。

**注意:您应该使用提供的任务SDK:https://github.com/Microsoft/vsts-task-lib

+0

我需要使用不同的API,那么我正在使用的API?在更改配置后,我仍然收到相同的错误 – Ruckus

+0

是的......您应该使用提供的构建任务SDK:https://github.com/Microsoft/vsts-task-lib –

相关问题