Is there a way to queue a Visual Studio Online "Build Definition" -- versus a "XAML Definition" -- using Powershell.
I have the following script:
#// CONFIGURATION ITEMS ============================================
$serverName="https://example.visualstudio.com/DefaultCollection"
$username = "[email protected]"
$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")
... but GetBuildDefinition()
only returns the items listed under XAML Definitions. :-(
updated url: https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#queue-a-build
Have you tried using VSO REST api to queue a build? See 'request a build' section here - https://www.visualstudio.com/integrate/api/build/requests