public override async Task RunTaskAsync(string taskName, string taskSessionId) { if (taskName == null) { throw new ArgumentNullException(nameof(taskName)); } if (taskSessionId == null) { throw new ArgumentNullException(nameof(taskSessionId)); } var domainOutput = new DomainOutput(); domainOutput.OnWrite += (text, color) => Output.Write(text, color); domainOutput.OnWriteLine += (text, color) => Output.WriteLine(text, color); domainOutput.OnWriteRaw += text => Output.WriteRaw(text); var packageClient = new DomainPackageClient(Packages.Boundary); var applicationClient = new ApplicationManagerClient(Applications.Boundary) { CurrentProjectId = Project.Id, CurrentDeploymentNumber = DeploymentNumber, }; var context = new AgentDeployContext { DeploymentNumber = DeploymentNumber, Project = Project, ProjectPackageId = ProjectPackageId, ProjectPackageVersion = ProjectPackageVersion, AssemblyFilename = AssemblyFilename, TaskName = taskName, WorkDirectory = WorkDirectory, ContentDirectory = ContentDirectory, BinDirectory = BinDirectory, ApplicationsDirectory = ApplicationsDirectory, Output = domainOutput, Packages = packageClient, AgentVariables = AgentVariables, ServerVariables = ServerVariables, Applications = applicationClient, EnvironmentName = EnvironmentName, Agent = Agent, }; try { var task = Task.Run(async() => { await Domain.RunDeployTask(context, TokenSource.Token); }); await taskList.AddOrUpdate(taskSessionId, id => task, (id, _) => task); await task.ContinueWith(t => { taskList.TryRemove(taskSessionId, out _); }); } catch (Exception error) { Exception = error; throw; } }
public async Task RunDeployTask(AgentDeployContext context, CancellationToken token) { Sponsor.Register(context.Output); Sponsor.Register(context.Packages); try { var completeEvent = new RemoteTaskCompletionSource <object>(); Agent.RunDeployTask(context, completeEvent); await completeEvent.Task; } finally { Sponsor.Unregister(context.Packages); Sponsor.Unregister(context.Output); } }
public override async Task RunTaskAsync(string taskName, string taskSessionId) { if (taskName == null) { throw new ArgumentNullException(nameof(taskName)); } if (taskSessionId == null) { throw new ArgumentNullException(nameof(taskSessionId)); } var domainOutput = new DomainOutput(); domainOutput.OnWrite += (text, color) => Output.Write(text, color); domainOutput.OnWriteLine += (text, color) => Output.WriteLine(text, color); domainOutput.OnWriteRaw += (text) => Output.WriteRaw(text); var context = new AgentDeployContext { DeploymentNumber = DeploymentNumber, Project = Project, ProjectPackageId = ProjectPackageId, ProjectPackageVersion = ProjectPackageVersion, AssemblyFilename = AssemblyFilename, TaskName = taskName, WorkDirectory = WorkDirectory, ContentDirectory = ContentDirectory, BinDirectory = BinDirectory, ApplicationsDirectory = ApplicationsDirectory, Output = domainOutput, Packages = PackageClient, AgentVariables = AgentVariables, ServerVariables = ServerVariables, EnvironmentName = EnvironmentName, Agent = Agent, }; try { await Domain.RunDeployTask(context, TokenSource.Token); } catch (Exception error) { Exception = error; throw; } }
public async Task RunDeployTask(AgentDeployContext context, CancellationToken token = default(CancellationToken)) { Log.Debug($"Running deployment Task '{context.TaskName}'..."); var completeEvent = new RemoteTaskCompletionSource(); token.Register(completeEvent.SetCancelled); try { Agent.RunDeployTask(context, completeEvent); await completeEvent.Task; Log.Info($"Deployment Task '{context.TaskName}' complete."); } catch (Exception error) { Log.Error($"Deployment Task '{context.TaskName}' failed!", error); throw; } }
public override async Task RunTaskAsync(string taskName, string taskSessionId) { var context = new AgentDeployContext { DeploymentNumber = DeploymentNumber, Project = Project, ProjectPackageId = ProjectPackageId, ProjectPackageVersion = ProjectPackageVersion, AssemblyFilename = AssemblyFilename, TaskName = taskName, WorkDirectory = WorkDirectory, ContentDirectory = ContentDirectory, BinDirectory = BinDirectory, ApplicationsDirectory = ApplicationsDirectory, Output = Output.Writer, Packages = PackageClient, ServerVariables = ServerVariables, EnvironmentName = EnvironmentName, }; await Domain.RunDeployTask(context, CancellationToken.None); }