public override async Task RunAsync() { var context = new ServerBuildContext { BuildNumber = BuildNumber, Agents = PhotonServer.Instance.Agents.All.ToArray(), Project = Project, AssemblyFilename = AssemblyFilename, PreBuild = PreBuild, TaskName = TaskName, WorkDirectory = WorkDirectory, ContentDirectory = ContentDirectory, BinDirectory = BinDirectory, Packages = PackageClient, ConnectionFactory = ConnectionFactory, Output = Output, ServerVariables = Variables, //Commit = Commit, }; using (var sessionHandle = context.RegisterAgents.Any(Roles)) { try { await sessionHandle.BeginAsync(TokenSource.Token); await sessionHandle.RunTaskAsync(TaskName, TokenSource.Token); } finally { await sessionHandle.ReleaseAsync(TokenSource.Token); } } }
public override async Task RunAsync() { var contextOutput = new DomainOutput(); contextOutput.OnWrite += (text, color) => Output.Write(text, color); contextOutput.OnWriteLine += (text, color) => Output.WriteLine(text, color); contextOutput.OnWriteRaw += (text) => Output.WriteRaw(text); var context = new ServerBuildContext { BuildNumber = Build.Number, Agents = PhotonServer.Instance.Agents.All.ToArray(), Project = Project, AssemblyFilename = AssemblyFilename, PreBuild = PreBuild, TaskName = TaskName, WorkDirectory = WorkDirectory, ContentDirectory = ContentDirectory, BinDirectory = BinDirectory, Packages = PackageClient, ConnectionFactory = ConnectionFactory, Output = contextOutput, ServerVariables = Variables, Commit = Commit, }; try { switch (Mode) { case AgentStartModes.All: await RunAll(context); break; case AgentStartModes.Any: await RunAny(context); break; } Build.IsSuccess = true; } catch (OperationCanceledException) { Build.IsCancelled = true; throw; } catch (Exception error) { Build.Exception = error.UnfoldMessages(); throw; } finally { Build.IsComplete = true; Build.Duration = DateTime.UtcNow - Build.Created; Build.ProjectPackages = PushedProjectPackages.ToArray(); Build.Save(); await Build.SetOutput(Output.GetString()); // TODO: Save alternate version with ansi characters removed } }
private async Task RunAny(ServerBuildContext context) { using (var sessionHandle = context.RegisterAgents.Any(Roles)) { try { await sessionHandle.BeginAsync(TokenSource.Token); await sessionHandle.RunTaskAsync(TaskName, TokenSource.Token); } finally { await sessionHandle.ReleaseAsync(TokenSource.Token); } } }
private async Task RunAll(ServerBuildContext context) { var sessionHandleCollection = context.RegisterAgents.All(Roles); try { await sessionHandleCollection.InitializeAsync(TokenSource.Token); await sessionHandleCollection.RunTasksAsync(new [] { TaskName }, TokenSource.Token); } finally { await sessionHandleCollection.ReleaseAllAsync(TokenSource.Token); } }