Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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;
            }
        }
Exemple #4
0
        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;
            }
        }
Exemple #5
0
        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);
        }