Java源码示例:org.kohsuke.github.GHCommitStatus

示例1
@Test
public void should_group_commit_statueses_by_context() throws IOException {
    final CommitHistoryView commitHistoryView = new CommitHistoryView();
    final DynamicBuild build = mock(DynamicBuild.class);
    final GHRepository githubRepo = mock(GHRepository.class);
    when(build.getGithubRepository()).thenReturn(githubRepo);

    final PagedIterable<GHCommitStatus> commitStatusesList = mock(PagedIterable.class);
    final GHCommitStatus commitStatus1 = mock(GHCommitStatus.class);
    final GHCommitStatus commitStatus2 = mock(GHCommitStatus.class);

    when(commitStatus1.getContext()).thenReturn("Default");
    when(commitStatus2.getContext()).thenReturn("DotCi");

    when(commitStatusesList.asList()).thenReturn(Arrays.asList(commitStatus1, commitStatus2));
    final GHCommit currentCommit = mock(GHCommit.class);
    when(githubRepo.getCommit(null)).thenReturn(currentCommit);
    when(currentCommit.listStatuses()).thenReturn(commitStatusesList);
    when(githubRepo.getLastCommitStatus(null)).thenReturn(commitStatus1);
    commitHistoryView.onLoad(build);
    final Map<String, List<GHCommitStatus>> commitStatuses = commitHistoryView.getCommitStatuses();

    Assert.assertEquals(commitStatuses.get("Default").get(0), commitStatus1);
    Assert.assertEquals(commitStatuses.get("DotCi").get(0), commitStatus2);
}
 
示例2
public CommitDetails(String sha, String commitUrl, String commitMessage, Date commitDate, GHCommitStatus commitStatus, String committerAvatarUrl, String committerName) {
    this.sha = sha;
    this.commitUrl = commitUrl;
    this.commitMessage = commitMessage;
    this.commitDate = commitDate;
    this.commitStatus = commitStatus;
    this.committerAvatarUrl = committerAvatarUrl;
    this.committerName = committerName;
}
 
示例3
@Test
public void testContextStatuses() throws Exception {
    final WorkflowJob workflowJob = jRule.jenkins.createProject(WorkflowJob.class, "testContextStatuses");

    workflowJob.addProperty(getPreconfiguredProperty(ghRule.getGhRepo()));
    workflowJob.addTrigger(getPreconfiguredPRTrigger());

    workflowJob.setDefinition(
            new CpsFlowDefinition(classpath(this.getClass(), "testContextStatuses.groovy"), false)
    );
    workflowJob.save();

    basicTest(workflowJob);

    GHPullRequest pullRequest = ghRule.getGhRepo().getPullRequest(1);
    assertThat(pullRequest, notNullValue());

    WorkflowRun lastBuild = workflowJob.getLastBuild();
    assertThat(lastBuild, notNullValue());

    GitHubPRCause cause = lastBuild.getCause(GitHubPRCause.class);
    assertThat(cause, notNullValue());

    List<GHCommitStatus> statuses = pullRequest.getRepository()
            .listCommitStatuses(cause.getHeadSha())
            .asList();
    assertThat(statuses, hasSize(7));

    // final statuses
    assertThat("workflow Run.getResult() strange",
            statuses,
            hasItem(commitStatus("testContextStatuses", GHCommitState.ERROR, "Run #2 ended normally"))
    );
    assertThat(statuses, hasItem(commitStatus("custom-context1", GHCommitState.SUCCESS, "Tests passed")));
    assertThat(statuses, hasItem(commitStatus("custom-context2", GHCommitState.SUCCESS, "Tests passed")));
}
 
示例4
public Map<String, List<GHCommitStatus>> getCommitStatuses() throws IOException {
    final GHRepository githubRepository = this.build.getGithubRepository();
    final List<GHCommitStatus> commitStatuses = githubRepository.getCommit(this.build.getSha()).listStatuses().asList();
    final Map<String, List<GHCommitStatus>> groupedStatuses = new HashMap<>();
    for (final GHCommitStatus status : commitStatuses) {
        final String context = status.getContext();
        if (groupedStatuses.get(context) == null) {
            groupedStatuses.put(context, new ArrayList<>());
        }
        groupedStatuses.get(context).add(status);
    }
    groupedStatuses.put("- Latest Status -", Arrays.asList(githubRepository.getLastCommitStatus(this.build.getSha())));
    return groupedStatuses;
}
 
示例5
@Override
public void run(CommandContext context) throws IOException {
    Status contextStatus = Status.COMPLETE;
    GHRepository ghRepository = context.gitHubRepository();
    if (ghRepository != null) {

        // lets look for a pending issue
        GHIssue issue = getOrFindIssue(context, ghRepository);
        if (issue != null && isOpen(issue)) {
            contextStatus = Status.PENDING;
        }

        List<GHPullRequest> pullRequests = PullRequests.getOpenPullRequests(ghRepository, context.getConfiguration());
        for (GHPullRequest pullRequest : pullRequests) {
            Configuration configuration = context.getConfiguration();
            if (GitHubHelpers.hasLabel(getLabels(pullRequest), configuration.getGithubPullRequestLabel())) {
                context.setPullRequest(pullRequest);

                if (!GitHubHelpers.isMergeable(pullRequest)) {
                    // lets re-run the update commands we can find on the PR
                    CompositeCommand commands = loadCommandsFromPullRequest(context, ghRepository, pullRequest);
                    if (commands != null) {
                        commands.run(context, ghRepository, pullRequest);
                    }
                }

                if (mergeOnSuccess) {
                    try {
                        GHCommitStatus status = getLastCommitStatus(ghRepository, pullRequest);
                        if (status != null) {
                            GHCommitState state = status.getState();
                            if (state != null && state.equals(GHCommitState.SUCCESS)) {
                                String message = Markdown.UPDATEBOT_ICON + " merging this pull request as its CI was successful";
                                pullRequest.merge(message);
                            }
                        }
                    } catch (IOException e) {
                        context.warn(LOG, "Failed to find last commit status for PR " + pullRequest.getHtmlUrl() + " " + e, e);
                    }
                }
                if (isOpen(pullRequest)) {
                    contextStatus = Status.PENDING;
                }
            }
        }
    }
    context.setStatus(contextStatus);
}
 
示例6
public static GHCommitStatus getLastCommitStatus(GHRepository repository, GHPullRequest pullRequest) throws IOException {
    String commitSha = pullRequest.getHead().getRef();
    return repository.getLastCommitStatus(commitSha);
}
 
示例7
@Override
protected Boolean featureValueOf(GHCommitStatus commitStatus) {
    return commitStatus.getState().equals(state) &&
            commitStatus.getContext().equals(context) &&
            commitStatus.getDescription().equals(description);
}
 
示例8
public GHCommitStatus getCommitStatus() { return commitStatus; }