File: CheckHelixJobStatus.cs
Web Access
Project: src\src\Microsoft.DotNet.Helix\Sdk\Microsoft.DotNet.Helix.Sdk.csproj (Microsoft.DotNet.Helix.Sdk)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Build.Framework;
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
 
namespace Microsoft.DotNet.Helix.Sdk
{
    public class CheckHelixJobStatus : HelixTask
    {
        /// <summary>
        /// An array of Helix Jobs to be checked
        /// </summary>
        [Required]
        public ITaskItem[] Jobs { get; set; }
 
        [Required]
        public ITaskItem[] WorkItems { get; set; }
 
        public bool FailOnWorkItemFailure { get; set; } = true;
 
        public bool FailOnMissionControlTestFailure { get; set; } = false;
 
        protected override Task ExecuteCore(CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
 
            if (FailOnWorkItemFailure)
            {
                string accessTokenSuffix = string.IsNullOrEmpty(AccessToken) ? "" : "?access_token={Get this from helix.dot.net}";
                foreach (ITaskItem workItem in WorkItems)
                {
                    var failed = workItem.GetMetadata("Failed");
                    if (failed == "true")
                    {
                        var jobName = workItem.GetMetadata("JobName");
                        var workItemName = workItem.GetMetadata("WorkItemName");
                        var consoleUri = workItem.GetMetadata("ConsoleOutputUri");
 
                        Log.LogError(FailureCategory.Test, $"Work item {workItemName} in job {jobName} has failed.\nFailure log: {consoleUri}{accessTokenSuffix}");
                    }
                }
            }
 
            if (FailOnMissionControlTestFailure)
            {
                Log.LogMessage($"Mission Control is deprecated. Please set FailOnMissionControlTestFailure to false.");
            }
 
            return Task.CompletedTask;
        }
    }
}