jenkins_script 'create ~/.ssh credentials' do
command <<-EOH.gsub(/ ^{8}/, '')
import jenkins.model.*
import com.cloudbees.plugins.credentials.*
import com.cloudbees.plugins.credentials.common.*
import com.cloudbees.plugins.credentials.domains.*
import com.cloudbees.jenkins.plugins.sshcredentials.impl.*
import hudson.plugins.sshslaves.*;
global_domain = Domain.global()
credentials_store =
Jenkins.instance.getExtensionList(
'com.cloudbees.plugins.credentials.SystemCredentialsProvider'
)[0].getStore()
credentials = new BasicSSHUserPrivateKey(
CredentialsScope.GLOBAL,
"#{node['cvent-jenkins']['ssh-user-id']}",
"#{node['cvent-jenkins']['ssh-user']}",
new BasicSSHUserPrivateKey.UsersPrivateKeySource(),
"",
"Credential ID: #{node['cvent-jenkins']['ssh-user-id']}"
)
// Create or update the credentials in the Jenkins instance
username_matcher = CredentialsMatchers.withUsername("#{node['cvent-jenkins']['ssh-user']}")
available_credentials =
CredentialsProvider.lookupCredentials(
StandardUsernameCredentials.class,
Jenkins.getInstance(),
hudson.security.ACL.SYSTEM,
new SchemeRequirement("ssh")
)
existing_credentials =
CredentialsMatchers.firstOrNull(
available_credentials,
username_matcher
)
if(existing_credentials != null) {
// !!This will take an existing UserPrivateKeySource credential and
// turn it into a DirectEntryPrivateKeySource credentials. :(
credentials_store.updateCredentials(
global_domain,
existing_credentials,
credentials
)
} else {
credentials_store.addCredentials(global_domain, credentials)
}
EOH
end