Exemple #1
0
 public void RunDeployTask(IAgentDeployContext context, RemoteTaskCompletionSource <object> completeEvent)
 {
     Task.Run(async() => {
         await deployTaskRegistry.ExecuteTask(context, CancellationToken.None);
         return((object)null);
     }).ContinueWith(completeEvent.FromTask);
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }