public void RunDeployTask(IAgentDeployContext context, RemoteTaskCompletionSource <object> completeEvent) { Task.Run(async() => { await deployTaskRegistry.ExecuteTask(context, CancellationToken.None); return((object)null); }).ContinueWith(completeEvent.FromTask); }
public void RunDeployTask(IAgentDeployContext context, RemoteTaskCompletionSource completeEvent) { if (deployTaskRegistry.TryGetDescription(context.TaskName, out var taskDesc)) { if (taskDesc.Roles?.Any() ?? false) { var isInRole = context.Agent?.Roles?.ContainsAny(taskDesc.Roles, StringComparer.OrdinalIgnoreCase) ?? false; if (!isInRole) { // Task is not in agent roles completeEvent.SetResult(); return; } } } using (var block = context.Output.WriteBlock()) { block.Write("Running deployment task ", ConsoleColor.DarkCyan); block.Write(context.TaskName, ConsoleColor.Cyan); block.Write(" on agent ", ConsoleColor.DarkCyan); block.Write(context.Agent?.Name, ConsoleColor.Cyan); block.WriteLine("...", ConsoleColor.DarkCyan); } deployTaskRegistry.ExecuteTask(context, CancellationToken.None) .ContinueWith(completeEvent.FromTask); }
public async Task ExecuteTask(IAgentDeployContext context, CancellationToken token) { if (!map.TryGetValue(context.TaskName, out var taskClassType)) { throw new Exception($"Deploy Task '{context.TaskName}' was not found!"); } object classObject = null; try { classObject = Activator.CreateInstance(taskClassType); if (!(classObject is IDeployTask task)) { throw new Exception($"Unable to create Deploy-Task implementation '{taskClassType}'!"); } task.Context = context; await task.RunAsync(token); } finally { (classObject as IDisposable)?.Dispose(); } }
public void RunDeployTask(IAgentDeployContext context, RemoteTaskCompletionSource completeEvent) { using (var block = context.Output.WriteBlock()) { block.Write("Running deployment task ", ConsoleColor.DarkCyan); block.Write(context.TaskName, ConsoleColor.Cyan); block.Write(" on agent ", ConsoleColor.DarkCyan); block.Write(context.Agent?.Name, ConsoleColor.Cyan); block.WriteLine("...", ConsoleColor.DarkCyan); } deployTaskRegistry.ExecuteTask(context, CancellationToken.None) .ContinueWith(completeEvent.FromTask); }
public bool IsDeployTaskInRole(IAgentDeployContext context) { if (!deployTaskRegistry.TryGetDescription(context.TaskName, out var taskDesc)) { return(true); } if (!(taskDesc.Roles?.Any() ?? false)) { return(true); } return(context.Agent?.Roles? .ContainsAny(taskDesc.Roles, StringComparer.OrdinalIgnoreCase) ?? false); }