From bd133c5bb2704d35ceefd7e4f1eb231945156be5 Mon Sep 17 00:00:00 2001 From: Paulo Canilho Date: Thu, 25 May 2023 11:34:17 +0200 Subject: [PATCH] feat: adapted the [GitHubChecksPublisher] to be compatible with [StandardUsernameCredentials] instead of enforcing [GitHubAppCredentials] allowing full compatibility with the [github-branch-source-plugin] credentials format --- .../plugins/checks/github/GitHubChecksContext.java | 7 ++++--- .../checks/github/GitHubChecksPublisher.java | 13 +++++++++---- .../io/jenkins/plugins/checks/github/SCMFacade.java | 13 ++++++++----- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksContext.java b/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksContext.java index e34f5c34..ff6ac580 100644 --- a/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksContext.java +++ b/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksContext.java @@ -2,6 +2,7 @@ import java.util.Optional; +import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials; import org.apache.commons.lang3.StringUtils; import edu.hm.hafner.util.FilteredLog; @@ -57,7 +58,7 @@ protected GitHubChecksContext(final Job job, final String url, final SCMFa * * @return the credentials */ - public GitHubAppCredentials getCredentials() { + public StandardUsernameCredentials getCredentials() { return getGitHubAppCredentials(StringUtils.defaultIfEmpty(getCredentialsId(), "")); } @@ -78,7 +79,7 @@ protected final SCMFacade getScmFacade() { return scmFacade; } - protected GitHubAppCredentials getGitHubAppCredentials(final String credentialsId) { + protected StandardUsernameCredentials getGitHubAppCredentials(final String credentialsId) { return findGitHubAppCredentials(credentialsId).orElseThrow(() -> new IllegalStateException("No GitHub APP credentials available for job: " + getJob().getName())); } @@ -108,7 +109,7 @@ protected boolean hasValidCredentials(final FilteredLog logger) { return true; } - private Optional findGitHubAppCredentials(final String credentialsId) { + private Optional findGitHubAppCredentials(final String credentialsId) { return getScmFacade().findGitHubAppCredentials(getJob(), credentialsId); } diff --git a/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksPublisher.java b/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksPublisher.java index f5bf5ad0..f1463d92 100644 --- a/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksPublisher.java +++ b/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksPublisher.java @@ -7,6 +7,7 @@ import java.util.logging.Level; import java.util.logging.Logger; +import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials; import org.apache.commons.lang3.StringUtils; import edu.hm.hafner.util.VisibleForTesting; @@ -57,14 +58,18 @@ public GitHubChecksPublisher(final GitHubChecksContext context, final PluginLogg /** * Publishes a GitHub check run. * - * @param details - * the details of a check run + * @param details the details of a check run */ @Override public void publish(final ChecksDetails details) { try { - GitHubAppCredentials credentials = context.getCredentials(); - GitHub gitHub = Connector.connect(StringUtils.defaultIfBlank(credentials.getApiUri(), gitHubUrl), + StandardUsernameCredentials credentials = context.getCredentials(); + String apiUri = null; + if (credentials instanceof GitHubAppCredentials) { + apiUri = ((GitHubAppCredentials) credentials).getApiUri(); + } + + GitHub gitHub = Connector.connect(StringUtils.defaultIfBlank(apiUri, gitHubUrl), credentials); GitHubChecksDetails gitHubDetails = new GitHubChecksDetails(details); diff --git a/src/main/java/io/jenkins/plugins/checks/github/SCMFacade.java b/src/main/java/io/jenkins/plugins/checks/github/SCMFacade.java index c6b64605..99bbbb7b 100644 --- a/src/main/java/io/jenkins/plugins/checks/github/SCMFacade.java +++ b/src/main/java/io/jenkins/plugins/checks/github/SCMFacade.java @@ -2,6 +2,7 @@ import com.cloudbees.plugins.credentials.CredentialsMatchers; import com.cloudbees.plugins.credentials.CredentialsProvider; +import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials; import edu.umd.cs.findbugs.annotations.CheckForNull; import hudson.model.AbstractProject; import hudson.model.Job; @@ -122,11 +123,13 @@ UserRemoteConfig getUserRemoteConfig(final GitSCM scm) { * the id of the target credentials * @return the found GitHub App credentials or empty */ - public Optional findGitHubAppCredentials(final Job job, final String credentialsId) { - List credentials = CredentialsProvider.lookupCredentials( - GitHubAppCredentials.class, job, ACL.SYSTEM, Collections.emptyList()); - GitHubAppCredentials appCredentials = - CredentialsMatchers.firstOrNull(credentials, CredentialsMatchers.withId(credentialsId)); + public Optional findGitHubAppCredentials(final Job job, final String credentialsId) { + List standardUsernameCredentials = CredentialsProvider.lookupCredentials( + StandardUsernameCredentials.class, job, ACL.SYSTEM, Collections.emptyList()); + + StandardUsernameCredentials appCredentials = + CredentialsMatchers.firstOrNull(standardUsernameCredentials, CredentialsMatchers.withId(credentialsId)); + return Optional.ofNullable(appCredentials); }