Azure Devops has a REST API which Beacon could use to also support Azure Devops.
There is a nuget package available which makes it easy to use this REST service in .NET projects. Here's a simple console example that polls the status of the lastest build on the master branch:
using Microsoft.TeamFoundation.Build.WebApi;using Microsoft.VisualStudio.Services.Common;using Microsoft.VisualStudio.Services.WebApi;using System;using System.Linq;using System.Threading.Tasks;namespaceAzureDevopsApiTest{publicclassAzureDevopsOptions{/// <summary>/// The base url of the organisation or tfs instance./// </summary>publicUriBaseUrl{get;set;}publicstringProjectName{get;set;}/// <summary>/// The definition id of the build./// </summary>publicintDefinitionId{get;set;}/// <summary>/// For branches use refs/heads/branchname./// For tags use refs/tags/tagname./// </summary>publicstringBranchName{get;set;}/// <summary>/// Optional, not needed for public projects./// </summary>publicstringPersonalAccessToken{get;set;}}classProgram{staticasync Task Main(string[]args){varoptions=new AzureDevopsOptions
{BaseUrl=new Uri("https://dev.azure.com/yourorganisation"),ProjectName="projectname",DefinitionId=11,BranchName="refs/heads/master",//PersonalAccessToken = "yourtokenhere"};varcredentials= options.PersonalAccessToken ==null?new VssCredentials():new VssBasicCredential(string.Empty, options.PersonalAccessToken);VssConnectionconnection=new VssConnection(options.BaseUrl, credentials);BuildHttpClientbuildClient= connection.GetClient<BuildHttpClient>();vardefinitions=new[]{(await buildClient.GetDefinitionAsync(options.ProjectName, options.DefinitionId)).Id };while(true){varlatestBuild=(await buildClient.GetBuildsAsync(options.ProjectName, definitions, top:1, branchName: options.BranchName)).FirstOrDefault();
Console.WriteLine(latestBuild?.Status ?? BuildStatus.None);await Task.Delay(500);}}}}
The Chocolatey package fails automated validation. It includes binaries but no way for moderators and the community to verify the files are legitimate.