【问题标题】:Access TFS TeamProjectCollection from build step with PowerShell使用 PowerShell 从构建步骤访问 TFS TeamProjectCollection
【发布时间】:2017-04-16 09:08:07
【问题描述】:

我正在尝试在我们的一个团队项目中使用 powershell 创建一个预构建步骤,以增加该 VS 解决方案中所有程序集/应用程序的内部版本号。这是针对 TFS2015-update 2 的。

我在这里和那里在线找到了一些示例代码,并拼凑了我认为可行的内容。我可以在 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

我得到的错误是:

使用“1”参数调用“GetService”的异常:“TF30063:您无权访问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)

抛出异常:

使用“1”参数调用“GetService”时出现异常:“TF400324:服务器无法使用 Team Foundation 服务。

我还尽力为 TFS 服务运行的 Windows 帐户修改 TFS 权限,以确保那里没有问题。我相当肯定我已将其添加到我的身份所在的所有角色/组中,但构建仍然无法通过身份验证。

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

【问题讨论】:

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

标签: powershell tfs tfs-2015


【解决方案1】:

您需要专门指示 TFS/VSTS 以允许正在执行的构建回调 TFS/VSTS。这可以保护您的服务器免受恶意开发人员退出构建脚本的影响。

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

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

【讨论】:

猜你喜欢
  • 2016-10-29
  • 1970-01-01
  • 2023-03-07
  • 2016-04-21
  • 2018-08-22
  • 2017-03-27
  • 2016-05-23
  • 2018-04-27
  • 1970-01-01
相关资源
最近更新 更多