Skip to content

Commit baf88e7

Browse files
jglickMarkEWaite
andauthored
Improve performance of credentials lookup (#3912)
* Use `CredentialsProvider.findCredentialByIdInItem` * Dep released * Rely on plugin BOM for credentials version --------- Co-authored-by: Mark Waite <mark.earl.waite@gmail.com>
1 parent c85db45 commit baf88e7

File tree

4 files changed

+35
-38
lines changed

4 files changed

+35
-38
lines changed

src/main/java/hudson/plugins/git/UserRemoteConfig.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package hudson.plugins.git;
22

3-
import com.cloudbees.plugins.credentials.CredentialsMatchers;
43
import com.cloudbees.plugins.credentials.CredentialsProvider;
54
import com.cloudbees.plugins.credentials.common.StandardCredentials;
65
import com.cloudbees.plugins.credentials.common.StandardListBoxModel;
@@ -268,10 +267,12 @@ public FormValidation doCheckRefspec(@QueryParameter String name,
268267
}
269268

270269
private static StandardCredentials lookupCredentials(@CheckForNull Item project, String credentialId, String uri) {
271-
return (credentialId == null) ? null : CredentialsMatchers.firstOrNull(
272-
CredentialsProvider.lookupCredentialsInItem(StandardCredentials.class, project, ACL.SYSTEM2,
273-
GitURIRequirementsBuilder.fromUri(uri).build()),
274-
CredentialsMatchers.withId(credentialId));
270+
return (credentialId == null) ? null : CredentialsProvider.findCredentialByIdInItem(
271+
credentialId,
272+
StandardCredentials.class,
273+
project,
274+
ACL.SYSTEM2,
275+
GitURIRequirementsBuilder.fromUri(uri).build());
275276
}
276277

277278
@Override

src/main/java/jenkins/plugins/git/AbstractGitSCMSource.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
*/
2424
package jenkins.plugins.git;
2525

26-
import com.cloudbees.plugins.credentials.CredentialsMatchers;
2726
import com.cloudbees.plugins.credentials.CredentialsNameProvider;
2827
import com.cloudbees.plugins.credentials.CredentialsProvider;
2928
import com.cloudbees.plugins.credentials.common.StandardCredentials;
@@ -1330,12 +1329,13 @@ private StandardUsernameCredentials getCredentials(@CheckForNull Item context) {
13301329
if (credentialsId == null) {
13311330
return null;
13321331
}
1333-
return CredentialsMatchers
1334-
.firstOrNull(
1335-
CredentialsProvider.lookupCredentialsInItem(StandardUsernameCredentials.class, context,
1336-
ACL.SYSTEM2, URIRequirementBuilder.fromUri(getRemote()).build()),
1337-
CredentialsMatchers.allOf(CredentialsMatchers.withId(credentialsId),
1338-
GitClient.CREDENTIALS_MATCHER));
1332+
var credential = CredentialsProvider.findCredentialByIdInItem(
1333+
credentialsId,
1334+
StandardUsernameCredentials.class,
1335+
context,
1336+
ACL.SYSTEM2,
1337+
URIRequirementBuilder.fromUri(getRemote()).build());
1338+
return credential != null && GitClient.CREDENTIALS_MATCHER.matches(credential) ? credential : null;
13391339
}
13401340

13411341
/**

src/main/java/jenkins/plugins/git/GitSCMFileSystem.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
package jenkins.plugins.git;
2727

28-
import com.cloudbees.plugins.credentials.CredentialsMatchers;
2928
import com.cloudbees.plugins.credentials.CredentialsProvider;
3029
import com.cloudbees.plugins.credentials.common.StandardCredentials;
3130
import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials;
@@ -369,20 +368,17 @@ public SCMFileSystem build(@NonNull Item owner, @NonNull SCM scm, @CheckForNull
369368
GitClient client = git.getClient();
370369
String credentialsId = config.getCredentialsId();
371370
if (credentialsId != null) {
372-
StandardCredentials credential = CredentialsMatchers.firstOrNull(
373-
CredentialsProvider.lookupCredentialsInItem(
374-
StandardUsernameCredentials.class,
375-
owner,
376-
ACL.SYSTEM2,
377-
URIRequirementBuilder.fromUri(remote).build()
378-
),
379-
CredentialsMatchers.allOf(
380-
CredentialsMatchers.withId(credentialsId),
381-
GitClient.CREDENTIALS_MATCHER
382-
)
383-
);
384-
client.addDefaultCredentials(credential);
385-
CredentialsProvider.track(owner, credential);
371+
var credential = CredentialsProvider.findCredentialByIdInItem(
372+
credentialsId,
373+
StandardUsernameCredentials.class,
374+
owner,
375+
ACL.SYSTEM2,
376+
URIRequirementBuilder.fromUri(remote).build());
377+
StandardCredentials matchedCredential = credential != null && GitClient.CREDENTIALS_MATCHER.matches(credential)
378+
? credential
379+
: null;
380+
client.addDefaultCredentials(matchedCredential);
381+
CredentialsProvider.track(owner, matchedCredential);
386382
}
387383

388384
if (!client.hasGitRepo(false)) {

src/main/java/jenkins/plugins/git/GitSCMTelescope.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
package jenkins.plugins.git;
2727

28-
import com.cloudbees.plugins.credentials.CredentialsMatchers;
2928
import com.cloudbees.plugins.credentials.CredentialsProvider;
3029
import com.cloudbees.plugins.credentials.common.StandardCredentials;
3130
import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials;
@@ -189,16 +188,17 @@ public final SCMFileSystem build(@NonNull Item owner, @NonNull SCM scm, SCMRevis
189188
StandardCredentials credentials;
190189
String credentialsId = config.getCredentialsId();
191190
if (credentialsId != null) {
192-
List<StandardUsernameCredentials> urlCredentials = CredentialsProvider
193-
.lookupCredentialsInItem(StandardUsernameCredentials.class, owner,
194-
owner instanceof Queue.Task t
195-
? Tasks.getAuthenticationOf2(t)
196-
: ACL.SYSTEM2, URIRequirementBuilder.fromUri(remote).build());
197-
credentials = CredentialsMatchers.firstOrNull(
198-
urlCredentials,
199-
CredentialsMatchers
200-
.allOf(CredentialsMatchers.withId(credentialsId), GitClient.CREDENTIALS_MATCHER)
201-
);
191+
var credential = CredentialsProvider.findCredentialByIdInItem(
192+
credentialsId,
193+
StandardUsernameCredentials.class,
194+
owner,
195+
owner instanceof Queue.Task t
196+
? Tasks.getAuthenticationOf2(t)
197+
: ACL.SYSTEM2,
198+
URIRequirementBuilder.fromUri(remote).build());
199+
credentials = credential != null && GitClient.CREDENTIALS_MATCHER.matches(credential)
200+
? credential
201+
: null;
202202
} else {
203203
credentials = null;
204204
}

0 commit comments

Comments
 (0)