我正在尝试在我们的一个团队项目中使用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。
答案 0 :(得分:0)
您需要专门指示TFS / VSTS允许执行的构建回调到TFS / VSTS。这可以保护您的服务器,防止恶意开发人员退出构建脚本。
你应该看到"启用Auth" Build的Options选项卡中的选项。
**注意:您应该使用提供的任务SDK:https://github.com/Microsoft/vsts-task-lib