From 234f09b178e548a05fadeed38ef7553acc9c623f Mon Sep 17 00:00:00 2001 From: Mark Waite Date: Fri, 20 Sep 2024 06:29:48 -0600 Subject: [PATCH] [JENKINS-73797] Revert "Decorate GitClient after adding credentials (#1649)" https://issues.jenkins.io/browse/JENKINS-73797 reports that Bitbucket branch source plugin multibranch Pipelines are broken by this change if they use ssh access to the repository. Rather than disrupt users by breaking their Pipelines, revert the change and release it so that we have time to evaluate alternatives and to develop better tests. This reverts commit 843d48b3a124b93d2e5ef396e96776472179a147. --- src/main/java/hudson/plugins/git/GitSCM.java | 7 ++-- .../java/hudson/plugins/git/GitSCMTest.java | 40 ------------------- 2 files changed, 3 insertions(+), 44 deletions(-) diff --git a/src/main/java/hudson/plugins/git/GitSCM.java b/src/main/java/hudson/plugins/git/GitSCM.java index 461de9aff5..ceab12095a 100644 --- a/src/main/java/hudson/plugins/git/GitSCM.java +++ b/src/main/java/hudson/plugins/git/GitSCM.java @@ -912,6 +912,9 @@ private GitClient createClient(TaskListener listener, EnvVars environment, @NonN Git git = Git.with(listener, environment).in(ws).using(gitExe); GitClient c = git.getClient(); + for (GitSCMExtension ext : extensions) { + c = ext.decorate(this,c); + } for (UserRemoteConfig uc : getUserRemoteConfigs()) { String ucCredentialsId = uc.getCredentialsId(); @@ -935,10 +938,6 @@ private GitClient createClient(TaskListener listener, EnvVars environment, @NonN } // TODO add default credentials - for (GitSCMExtension ext : extensions) { - c = ext.decorate(this,c); - } - return c; } diff --git a/src/test/java/hudson/plugins/git/GitSCMTest.java b/src/test/java/hudson/plugins/git/GitSCMTest.java index d3d7e98912..96c6621cd2 100644 --- a/src/test/java/hudson/plugins/git/GitSCMTest.java +++ b/src/test/java/hudson/plugins/git/GitSCMTest.java @@ -5,7 +5,6 @@ import com.cloudbees.plugins.credentials.CredentialsStore; import com.cloudbees.plugins.credentials.SystemCredentialsProvider; import com.cloudbees.plugins.credentials.common.StandardCredentials; -import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials; import com.cloudbees.plugins.credentials.domains.Domain; import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl; import org.htmlunit.html.HtmlPage; @@ -2916,30 +2915,6 @@ public void testCommitMessageIsPrintedToLogs() throws Exception { r.waitForMessage("Commit message: \"test commit\"", run); } - @Issue("JENKINS-73677") - @Test - public void testExtensionsDecorateClientAfterSettingCredentials() throws Exception { - assumeTrue("Test class max time " + MAX_SECONDS_FOR_THESE_TESTS + " exceeded", isTimeAvailable()); - FreeStyleProject project = setupSimpleProject("master"); - StandardCredentials extensionCredentials = createCredential(CredentialsScope.GLOBAL, "github"); - store.addCredentials(Domain.global(), extensionCredentials); - // setup global config - List remoteConfigs = GitSCM.createRepoList("https://github.com/jenkinsci/git-plugin", null); - project.setScm(new GitSCM( - remoteConfigs, - Collections.singletonList(new BranchSpec("master")), - false, - null, - null, - null, - List.of(new TestSetCredentialsGitSCMExtension((StandardUsernameCredentials) extensionCredentials)))); - sampleRepo.init(); - sampleRepo.write("file", "v1"); - sampleRepo.git("commit", "--all", "--message=test commit"); - Run run = r.buildAndAssertSuccess(project); - r.waitForMessage("using GIT_ASKPASS to set credentials " + extensionCredentials.getDescription(), run); - } - private void setupJGit(GitSCM git) { git.gitTool="jgit"; r.jenkins.getDescriptorByType(GitTool.DescriptorImpl.class).setInstallations(new JGitTool(Collections.emptyList())); @@ -2973,19 +2948,4 @@ private boolean isWindows() { private StandardCredentials createCredential(CredentialsScope scope, String id) { return new UsernamePasswordCredentialsImpl(scope, id, "desc: " + id, "username", "password"); } - - public static class TestSetCredentialsGitSCMExtension extends GitSCMExtension { - - private final StandardUsernameCredentials credentials; - - public TestSetCredentialsGitSCMExtension(StandardUsernameCredentials credentials) { - this.credentials = credentials; - } - - @Override - public GitClient decorate(GitSCM scm, GitClient git) throws GitException { - git.setCredentials(credentials); - return git; - } - } }