Hi everyone,
I've run into an issue with the Jenkins plugin I'm working on and I could
use some help. The plugin uses a REST API with an API Token, and the API
Token is stored in the Credentials plugin as a 'Secret Text' type.
The plugin works fine when run from the master Jenkins instance, but if
it's run on a slave node it crashes when trying to access the Credentials.
Below is the code we are using to access the credentials:
public String getCredentialWithId(String credentialId) {
List<StringCredentials> stringCredentials = fetchStringCredentials();
StringCredentials credential = CredentialsMatchers.firstOrNull(
stringCredentials,
CredentialsMatchers.withId(credentialId));
String secret = null;
if (credential != null) {
secret = credential.getSecret().getPlainText();
}
return secret;
}
private List<StringCredentials> fetchStringCredentials() {
return CredentialsProvider.lookupCredentials(
StringCredentials.class,
Jenkins.getInstance(),
ACL.SYSTEM,
Collections.<DomainRequirement>emptyList()
);
}
The problem exists with 'Jenkins.getInstance()' in
'fetchStringCredentials()'. This will return 'null' if it's not run on the
master Jenkins instance. Is there a way to access credentials stored in
the Credentials
plugin when running on a slave node?
I've tried using the 'CredentialsProvider.findCredentialById()' function to
get the Credential in the below example.
public String getCredentialsWithIdFromRun(String credentialsId, Run run)
{
if (StringUtils.isBlank(credentialsId)) {
return null;
}
StringCredentials result = CredentialsProvider.findCredentialById(
credentialsId,
StringCredentials.class,
run,
Collections.<DomainRequirement>emptyList());
return result.getSecret().getPlainText();
}
However, this gives me the wrong value for the Credential ID (not null).
Any advice would be appreciated.
Thanks,
Andrew
--
You received this message because you are subscribed to the Google Groups
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-dev/6cf5b508-155f-47f2-870d-502866d3cb1e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.