private void DisplayCommitSignatureStatus(CommitStatus commitStatus) { /* COMMIT section */ switch (commitStatus) { case CommitStatus.GoodSignature: commitSignPicture.Image = Properties.Resources.commit_ok; commitSignPicture.Visible = true; break; case CommitStatus.MissingPublicKey: commitSignPicture.Image = Properties.Resources.commit_warning; commitSignPicture.Visible = true; break; case CommitStatus.SignatureError: commitSignPicture.Image = Properties.Resources.commit_error; commitSignPicture.Visible = true; break; case CommitStatus.NoSignature: default: commitSignPicture.Visible = false; break; } }
public Package(Product product, CombinedCommitStatus commit, CommitStatus status) { Product = product; Commit = commit; Status = status; TargetUri = new Uri(status.TargetUrl); }
public GpgInfo(CommitStatus commitStatus, string commitVerificationMessage, TagStatus tagStatus, string tagVerificationMessage) { CommitStatus = commitStatus; CommitVerificationMessage = commitVerificationMessage; TagStatus = tagStatus; TagVerificationMessage = tagVerificationMessage; }
private async Task NotifyGithubComplete(ProjectGithubSource githubSource) { if (SourceCommit == null) { Log.Error("Unable to send GitHub notification! Commit is undefined!"); return; } var status = new CommitStatus { Context = "Photon", }; if (Exception != null) { status.State = CommitStates.Failure; status.Description = "Build Failed!"; } else { status.State = CommitStates.Success; status.Description = "Build Successful."; } await GetStatusUpdater(githubSource).Post(status); }
public void ReceiveCommitStatus(string commitSha, CommitStatus status) { if (commitStatus.ContainsKey(commitSha)) { commitStatus.AddOrUpdate(commitSha, ImmutableList <CommitStatus> .Empty, // We already checked the key; should not hit this "add". (_, oldValue) => oldValue.Where(s => s.Key != status.Key).Append(status).ToImmutableList()); } }
public async Task Validate_GetRevisionCommitSignatureStatusAsync(CommitStatus expected, string gitCmdReturn) { var guid = Guid.NewGuid().ToString("N"); GitRevision revision = new GitRevision(guid); _module().RunGitCmd($"log --pretty=\"format:%G?\" -1 {revision.Guid}").Returns(gitCmdReturn); var actual = await _gpgController.GetRevisionCommitSignatureStatusAsync(revision); Assert.AreEqual(expected, actual); }
public async Task Validate_GetRevisionCommitSignatureStatusAsync(CommitStatus expected, string gitCmdReturn) { var objectId = ObjectId.Random(); var revision = new GitRevision(objectId); _module().RunGitCmd($"log --pretty=\"format:%G?\" -1 {revision.Guid}").Returns(gitCmdReturn); var actual = await _gpgController.GetRevisionCommitSignatureStatusAsync(revision); Assert.AreEqual(expected, actual); }
public virtual async Task SetCommitStatus(int projectId, CommitStatus status) { await new RestRequest($"/projects/{projectId}/statuses/{status.Commit}", Method.POST) .AddJsonBody(new { state = status.State.ToString().ToLower(), name = status.Name, target_url = status.TargetUrl, description = status.Description }) .Execute(_client); }
private async Task NotifyGithubStarted(ProjectGithubSource githubSource) { if (SourceCommit == null) { Log.Error("Unable to send GitHub notification! Commit is undefined!"); return; } var status = new CommitStatus { State = CommitStates.Pending, Context = "Photon", Description = "Build in progress..." }; await GetStatusUpdater(githubSource).Post(status); }
public async Task Validate_GetRevisionCommitSignatureStatusAsync(CommitStatus expected, string gitCmdReturn) { var objectId = ObjectId.Random(); var revision = new GitRevision(objectId); var args = new GitArgumentBuilder("log") { "--pretty=\"format:%G?\"", "-1", revision.Guid }; using var _ = _executable.StageOutput(args.ToString(), gitCmdReturn); var actual = await _gpgController.GetRevisionCommitSignatureStatusAsync(revision); Assert.AreEqual(expected, actual); }
internal override CommitStatus Commit() { EnsureLoaded(); CommitStatus status = CommitStatus.Continue; if (m_removedElements != null) { // Iterate through all removed elements first. foreach (Element element in m_removedElements.Values) { status = element.CommitImpl(); if (status == CommitStatus.Discontinue) { break; } } } if (m_elements != null) { // Iterate through all real elements now. if (status != CommitStatus.Discontinue) { foreach (Element element in m_elements) { status = element.CommitImpl(); if (status == CommitStatus.Discontinue) { break; } } } } // Clean out the removed elements now that everything is done. m_removedElements = null; return(status); }
public async Task Validate_GetRevisionCommitSignatureStatusAsync(CommitStatus expected, string gitCmdReturn) { var objectId = ObjectId.Random(); var revision = new GitRevision(objectId); var args = new GitArgumentBuilder("log") { "--pretty=\"format:%G?\"", "-1", revision.Guid }; _module().GitExecutable.GetOutput(Arg.Is <ArgumentString>(arg => arg.ToString().Equals(args.ToString()))) .Returns(x => gitCmdReturn); var actual = await _gpgController.GetRevisionCommitSignatureStatusAsync(revision); Assert.AreEqual(expected, actual); }
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(); }; }
protected override CommitStatus Update() { ICatalogueConnection connection = Catalogue.CatalogueConnection; CommitStatus status = connection.Update(this); // Send a notification if any events have been enabled or disabled. if (_eventStatusChanged) { var catalogueUpdate = connection as ICatalogueUpdate; if (catalogueUpdate != null) { catalogueUpdate.EventStatusChanged(CatalogueElements.Source, FullyQualifiedReference); } _eventStatusChanged = false; } return(status); }
private static IDisposable StatusColor(CommitStatus commitStatus) { switch (commitStatus) { case CommitStatus.Default: return(new ColoredBlock(ConsoleColor.Green, _defaultBackgroundColor)); case CommitStatus.Local: return(new ColoredBlock(ConsoleColor.Red, _defaultBackgroundColor)); case CommitStatus.Behind: return(new ColoredBlock(ConsoleColor.Yellow, _defaultBackgroundColor)); case CommitStatus.Ahead: return(new ColoredBlock(ConsoleColor.Green, _defaultBackgroundColor)); default: throw new ArgumentOutOfRangeException(nameof(commitStatus), commitStatus, null); } }
public async Task Status(DateTimeOffset eventDate, StatusPayload payload) { var updater = new DataUpdater(_contextFactory, _mapper); await updater.UpdateRepositories(eventDate, new[] { payload.Repository }); // Since we only do this here there's no need to add a mapping var status = new CommitStatus() { Context = payload.Context, CreatedAt = payload.CreatedAt, Description = payload.Description, Id = payload.Id, State = payload.State, TargetUrl = payload.TargetUrl, UpdatedAt = payload.UpdatedAt, }; await updater.UpdateCommitStatuses(payload.Repository.Id, payload.Sha, new[] { status }); await updater.Changes.Submit(_queueClient); }
protected override CommitStatus Update() { CheckEventOverlap(); ICatalogueConnection connection = Catalogue.CatalogueConnection; CommitStatus status = connection.Update(this); // Send a notification if any events have been enabled or disabled. if (_eventStatusChanged) { var catalogueUpdate = connection as ICatalogueUpdate; if (catalogueUpdate != null) { catalogueUpdate.EventStatusChanged(CatalogueElements.Namespace, FullName); } _eventStatusChanged = false; } return(status); }
protected internal virtual CommitStatus CommitImpl() { CommitStatus status = CommitStatus.Continue; // Act based on the current state. switch (m_state) { case ElementState.Added: status = Create(); break; case ElementState.Dirty: status = Update(); break; case ElementState.Removed: DeleteChildren(); status = Delete(); break; case ElementState.Clean: case ElementState.Created: break; default: Debug.Fail("Unexpected value of m_state: " + m_state.ToString()); break; } // If needed do the children. if (status == CommitStatus.Continue) { status = m_collections.Commit(); } return(status); }
public CommitStatus Commit() { CommitStatus status = CommitStatus.Continue; if (m_collections != null) { // Iterate through all collections. for (int index = 0; index < m_collections.Length; index++) { Collection col = (Collection)m_collections[index]; if (col != null) { status = col.Commit(); if (status == CommitStatus.Discontinue) { return(status); } } } } return(status); }
public async Task <bool> SetCommitStatus(string qualifiedRepoName, string sha, CommitStatus state, string buildStatusUrl, string description, string contextSuffix) { if (!CheckIsConfigured() || client == null) { return(false); } string context = $"DevCenter:{contextSuffix}"; var response = await client.PostAsJsonAsync( $"https://api.github.com/repos/{qualifiedRepoName}/statuses/{sha}", new CommitStatusSetRequest() { State = state, TargetUrl = buildStatusUrl, Description = description, Context = context, }); if (!response.IsSuccessStatusCode) { await ReportFailedRequest(response); return(false); } return(true); }
private async Task <string> GetFailureResultsAsync(IMcrStatusClient statusClient, CommitStatus commitStatus) { CommitResultDetailed result = await statusClient.GetCommitResultDetailedAsync(Options.CommitDigest, commitStatus.OnboardingRequestId); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine($"Failure for commit digest '{Options.CommitDigest}':"); stringBuilder.AppendLine($"\tID: {result.OnboardingRequestId}"); stringBuilder.AppendLine($"\tBranch: {result.Branch}"); result.ContentFiles.ForEach(file => stringBuilder.AppendLine($"\t\t{file}")); stringBuilder.Append(result.Substatus.ToString("\t")); return(stringBuilder.ToString()); }
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; } } }
/// <summary> /// Checks if a given <paramref name="commitStatus"/> is for Travis-CI /// </summary> /// <param name="commitStatus">The <see cref="CommitStatus"/> to check</param> /// <returns><see langword="true"/> if the <paramref name="commitStatus"/> is for Travis-CI, <see langword="false"/> otherwise</returns> static bool IsTravisStatus(CommitStatus commitStatus) { return(commitStatus.TargetUrl.StartsWith("https://travis-ci.org/", StringComparison.InvariantCultureIgnoreCase)); }
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 SetCommitStatus(int projectId, CommitStatus status) { await NotAllowed(); }