【问题标题】:Queuing Visual Studio Online Build With Powershell使用 Powershell 排队 Visual Studio Online Build
【发布时间】:2015-07-21 18:12:27
【问题描述】:

有没有办法使用 Powershell 对 Visual Studio Online“构建定义”(与“XAML 定义”)进行排队。

我有以下脚本:

#// CONFIGURATION ITEMS ============================================
$serverName="https://example.visualstudio.com/DefaultCollection"
$username = "example@example.com"
$password = "mypassword";
$teamProject = "Web"
$buildDefinition = "Test"
#// ================================================================


[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")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.WorkItemTracking.Client")
$assembly = ("Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")

$source =  @"
using System;
using System.Collections.Generic;
using System.Text;
using  Microsoft.TeamFoundation.Client;
using System.Net;
public class ConnectByImplementingCredentialsProvider : ICredentialsProvider
    {
        public ICredentials GetCredentials(Uri uri, ICredentials iCredentials)
        {
            return new NetworkCredential(" $username ", " $password ");
        }

        public void NotifyCredentialsAuthenticated(Uri uri)
        {
            throw new ApplicationException("Unable to authenticate");
        }
    }
"@

Add-Type -ReferencedAssemblies $assembly -TypeDefinition $source -Language CSharp 
$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName, (New-Object ConnectByImplementingCredentialsProvider))
$tfs.EnsureAuthenticated() 
$buildserver = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$definition = $buildserver.GetBuildDefinition($teamProject, $buildDefinition)
$request = $definition.CreateBuildRequest()
$buildserver.QueueBuild($request, "None") 

...但GetBuildDefinition() 仅返回 XAML 定义下列出的项目。 :-(

【问题讨论】:

    标签: powershell tfsbuild azure-devops


    【解决方案1】:

    更新的网址: https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#queue-a-build

    您是否尝试过使用 VSO REST api 对构建进行排队?请参阅此处的“请求构建”部分 - https://www.visualstudio.com/integrate/api/build/requests

    【讨论】:

    • 我刚刚尝试发布到此 URL:MYACCOUNTNAMEWASHERE.visualstudio.com/defaultcollection/Web/… 正文为:{ "definition": { "id": 1 }, "reason": "Manual", "priority": "Normal" } 我在响应中得到了回复:Microsoft Internet Explorer 的增强安全配置当前已在您的环境中启用.这种增强的安全级别会阻止我们的 Web 集成体验正确显示或执行。 我在 Mac 上使用 Google Chrome 和 Postman,所以我知道该消息不是来自我的。
    • 我使用相同的 URL 进行了 GET,它显示了我所有的构建,但同样只有 XAML 定义,而不是“构建定义”下列出的那些
    • 嗯..这很奇怪。发送发布请求时,您如何进行身份验证?假设您已在您的帐户上启用备用凭据并使用基本身份验证?也可能值得尝试使用 PAT(个人访问令牌)。您可以在 VSO 中从您的个人资料页面创建 PAT,并在您的 POST 请求的 HTTP 标头中将其提供为 Authorization: Bearer <auth-token>
    • 我生成了一个PAT,把Authorization放在header字段,然后Bearer mytokenwenthere放在value字段邮差。我仍然收到相同的增强安全配置消息。
    • 你可以尝试使用 2.0 版的 api 吗?看到这个线程 - stackoverflow.com/questions/31533664/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2018-10-06
    • 2016-02-23
    • 2018-11-16
    相关资源
    最近更新 更多