private void ApplyGithubNotification(ServerBuildSession session, ProjectGithubSource source, GithubCommit commit) { var su = new CommitStatusUpdater { Username = source.Username, Password = source.Password, StatusUrl = commit.StatusesUrl, Sha = commit.Sha, }; session.PreBuildEvent += (o, e) => { var status = new CommitStatus { State = CommitStates.Pending, Context = "Photon", Description = "Build in progress..." }; su.Post(status).GetAwaiter().GetResult(); }; session.PostBuildEvent += (o, e) => { var status = new CommitStatus { Context = "Photon", }; if (session.Result.Cancelled) { status.State = CommitStates.Error; status.Description = "The build was cancelled."; } else if (session.Result.Successful) { status.State = CommitStates.Success; status.Description = $"Build Successful. {session.Result.Message}"; } else { status.State = CommitStates.Failure; status.Description = $"Build Failed! {session.Result.Message}"; } su.Post(status).GetAwaiter().GetResult(); }; }
public override async Task RunTaskAsync(string taskName, string taskSessionId) { var context = new AgentBuildContext { Project = Project, AssemblyFilename = AssemblyFilename, GitRefspec = GitRefspec, TaskName = taskName, WorkDirectory = WorkDirectory, ContentDirectory = ContentDirectory, BinDirectory = BinDirectory, BuildNumber = BuildNumber, Output = Output.Writer, Packages = PackageClient, ServerVariables = ServerVariables, AgentVariables = PhotonAgent.Instance.Variables, }; var githubSource = Project?.Source as ProjectGithubSource; var notifyGithub = githubSource != null && githubSource.NotifyOrigin == NotifyOrigin.Agent && Commit != null; CommitStatusUpdater su = null; if (notifyGithub) { su = new CommitStatusUpdater { Username = githubSource.Username, Password = githubSource.Password, StatusUrl = Commit.StatusesUrl, Sha = Commit.Sha, }; var status = new CommitStatus { State = CommitStates.Pending, Context = "Photon", Description = "Build in progress..." }; await su.Post(status); } var success = false; try { await Domain.RunBuildTask(context); success = true; } finally { if (notifyGithub) { var status = new CommitStatus { Context = "Photon", }; if (success) { status.State = CommitStates.Success; status.Description = "Build Successful."; } else { status.State = CommitStates.Failure; status.Description = "Build Failed!"; } await su.Post(status); } } }
public override async Task RunTaskAsync(string taskName, string taskSessionId) { using (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 AgentBuildContext { Project = Project, Agent = Agent, AssemblyFilename = AssemblyFilename, GitRefspec = GitRefspec, TaskName = taskName, WorkDirectory = WorkDirectory, ContentDirectory = ContentDirectory, BinDirectory = BinDirectory, BuildNumber = BuildNumber, Output = contextOutput, Packages = PackageClient, ServerVariables = ServerVariables, AgentVariables = AgentVariables, }; var githubSource = Project?.Source as ProjectGithubSource; var notifyGithub = githubSource != null && githubSource.NotifyOrigin == NotifyOrigin.Agent && Commit != null; CommitStatusUpdater su = null; CommitStatus status; if (notifyGithub) { su = new CommitStatusUpdater { Username = githubSource.Username, Password = githubSource.Password, StatusUrl = Commit.StatusesUrl, Sha = Commit.Sha, }; status = new CommitStatus { State = CommitStates.Pending, Context = "Photon", Description = "Build in progress..." }; await su.Post(status); } status = new CommitStatus { Context = "Photon", }; try { await Domain.RunBuildTask(context, TokenSource.Token); if (notifyGithub) { status.State = CommitStates.Success; status.Description = "Build Successful."; await su.Post(status); } } catch (Exception error) { Exception = error; if (notifyGithub) { status.State = CommitStates.Failure; status.Description = "Build Failed!"; await su.Post(status); } throw; } } }