Skip to content

Instantly share code, notes, and snippets.

@gpie3k
Created July 17, 2020 08:22
Show Gist options
  • Save gpie3k/4a19ef4878dbacf877d137adc10b1a9b to your computer and use it in GitHub Desktop.
Save gpie3k/4a19ef4878dbacf877d137adc10b1a9b to your computer and use it in GitHub Desktop.
jenkins scripts
import jenkins.model.*
instance = Jenkins.getInstance()
globalNodeProperties = instance.getGlobalNodeProperties()
envVarsNodePropertyList = globalNodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
newEnvVarsNodeProperty = null
envVars = null
if ( envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0 ) {
newEnvVarsNodeProperty = new hudson.slaves.EnvironmentVariablesNodeProperty();
globalNodeProperties.add(newEnvVarsNodeProperty)
envVars = newEnvVarsNodeProperty.getEnvVars()
} else {
envVars = envVarsNodePropertyList.get(0).getEnvVars()
}
envVars.put("KEY", "VALUE")
instance.save()
import java.lang.reflect.*;
import jenkins.model.Jenkins;
import jenkins.model.*;
import org.jenkinsci.plugins.scriptsecurity.scripts.*;
import org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.*;
scriptApproval = ScriptApproval.get()
alreadyApproved = new HashSet<>(Arrays.asList(scriptApproval.getApprovedSignatures()))
// add all manual whitelist methods here.
approveSignature('method groovy.json.JsonBuilder call java.util.List')
approveSignature('method groovy.json.JsonSlurper parseText java.lang.String')
approveSignature('method groovy.json.JsonSlurperClassic parseText java.lang.String')
approveSignature('method groovy.json.JsonSlurperClassic parseText')
approveSignature('method groovy.lang.Binding getVariable java.lang.String')
approveSignature('method groovy.lang.Binding getVariables')
approveSignature('method groovy.lang.Binding hasVariable java.lang.String')
approveSignature('method groovy.lang.Closure getMaximumNumberOfParameters')
approveSignature('method groovy.lang.GString plus java.lang.String')
approveSignature('method groovy.lang.GroovyObject invokeMethod java.lang.String java.lang.Object')
approveSignature('method hudson.model.Actionable getAction java.lang.Class')
approveSignature('method hudson.model.Actionable getActions')
approveSignature('method hudson.model.Cause$UpstreamCause getUpstreamProject')
approveSignature('method hudson.model.Cause$UserIdCause getUserId')
approveSignature('method hudson.model.Item getAllJobs')
approveSignature('method hudson.model.Item getName')
approveSignature('method hudson.model.Item getUrl')
approveSignature('method hudson.model.ItemGroup getItem java.lang.String')
approveSignature('method hudson.model.Job addProperty hudson.model.JobProperty')
approveSignature('method hudson.model.Job getBuildByNumber int')
approveSignature('method hudson.model.Job getLastBuild')
approveSignature('method hudson.model.Job getLastSuccessfulBuild')
approveSignature('method hudson.model.Job isBuilding')
approveSignature('method hudson.model.Run getCauses')
approveSignature('method hudson.model.Run getEnvironment hudson.model.TaskListener')
approveSignature('method hudson.model.Run getLogFile')
approveSignature('method hudson.model.Run getNumber')
approveSignature('method hudson.model.Run getParent')
approveSignature('method hudson.model.Run getResult')
approveSignature('method hudson.model.Run getUrl')
approveSignature('method hudson.model.Saveable save')
approveSignature('method java.time.OffsetDateTime atZoneSameInstant java.time.ZoneId')
approveSignature('method java.time.chrono.ChronoZonedDateTime format java.time.format.DateTimeFormatter')
approveSignature('method java.util.Dictionary get java.lang.Object')
approveSignature('method java.util.Map containsKey java.lang.Object')
approveSignature('method java.util.Map entrySet')
approveSignature('method java.util.Map get java.lang.Object')
approveSignature('method java.util.Map keySet')
approveSignature('method java.util.Map putAll java.util.Map')
approveSignature('method java.util.Map remove java.lang.Object')
approveSignature('method java.util.Map size')
approveSignature('method java.util.Map values')
approveSignature('method java.util.Properties load java.io.Reader')
approveSignature('method org.jenkinsci.plugins.workflow.job.WorkflowJob setConcurrentBuild boolean')
approveSignature('method org.jenkinsci.plugins.workflow.job.WorkflowJob setDefinition org.jenkinsci.plugins.workflow.flow.FlowDefinition')
approveSignature('new groovy.json.JsonSlurperClassic')
approveSignature('new hudson.model.ParametersDefinitionProperty hudson.model.ParameterDefinition[]')
approveSignature('new hudson.model.StringParameterDefinition java.lang.String java.lang.String java.lang.String')
approveSignature('new java.lang.String byte[]')
approveSignature('new java.util.Properties')
approveSignature('new org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition java.lang.String boolean')
approveSignature('staticMethod java.time.OffsetDateTime now')
approveSignature('staticMethod java.time.ZoneId of java.lang.String')
approveSignature('staticMethod jenkins.model.Jenkins get')
approveSignature('staticMethod jenkins.model.Jenkins getInstance')
approveSignature('staticMethod org.codehaus.groovy.runtime.EncodingGroovyMethods decodeBase64 java.lang.String')
// ... your list here ...
scriptApproval.save()
void approveSignature(String signature) {
if (!alreadyApproved.contains(signature)) {
scriptApproval.approveSignature(signature)
}
}
// Utility methods
String printArgumentTypes(Object[] args) {
StringBuilder b = new StringBuilder();
for (Object arg : args) {
b.append(' ');
b.append(EnumeratingWhitelist.getName(arg));
}
return b.toString();
}
import hudson.scm.SCM
import jenkins.model.Jenkins
import jenkins.plugins.git.GitSCMSource
import org.jenkinsci.plugins.workflow.libs.*
import org.jenkinsci.plugins.workflow.libs.LibraryConfiguration
import org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever
// parameters
def globalLibrariesParameters = [
branch: "master",
credentialId: "default-ssh-credentials",
implicit: false,
name: "ngp-cicd-libs",
repository: "ssh://git@gihub/gpie3k/libs.git"
]
// define global library
GitSCMSource gitSCMSource = new GitSCMSource(
"global-shared-library",
globalLibrariesParameters.repository,
globalLibrariesParameters.credentialId,
"*",
"",
false
)
// define retriever
SCMSourceRetriever sCMSourceRetriever = new SCMSourceRetriever(gitSCMSource)
// get Jenkins instance
Jenkins jenkins = Jenkins.getInstance()
// get Jenkins Global Libraries
def globalLibraries = jenkins.getDescriptor("org.jenkinsci.plugins.workflow.libs.GlobalLibraries")
// define new library configuration
LibraryConfiguration libraryConfiguration = new LibraryConfiguration(globalLibrariesParameters.name, sCMSourceRetriever)
libraryConfiguration.setDefaultVersion(globalLibrariesParameters.branch)
libraryConfiguration.setImplicit(globalLibrariesParameters.implicit)
// set new Jenkins Global Library
globalLibraries.get().setLibraries([libraryConfiguration])
// save current Jenkins state to disk
jenkins.save()
#!groovy
// imports
import com.cloudbees.jenkins.plugins.sshcredentials.impl.*
import com.cloudbees.plugins.credentials.*
import com.cloudbees.plugins.credentials.common.*
import com.cloudbees.plugins.credentials.domains.Domain
import com.cloudbees.plugins.credentials.impl.*
import hudson.util.Secret
import java.nio.file.Files
import jenkins.model.Jenkins
import net.sf.json.JSONObject
import org.jenkinsci.plugins.plaincredentials.impl.*
// parameters
def jenkinsMasterKeyParameters = [
description: 'Jenkins Master SSH Key',
id: '${id}',
secret: '${secret}',
userName: '${userName}',
key: new BasicSSHUserPrivateKey.DirectEntryPrivateKeySource('''${key}''')
]
// get Jenkins instance
Jenkins jenkins = Jenkins.getInstance()
// get credentials domain
def domain = Domain.global()
// get credentials store
def store = jenkins.getExtensionList('com.cloudbees.plugins.credentials.SystemCredentialsProvider')[0].getStore()
// define private key
def privateKey = new BasicSSHUserPrivateKey(
CredentialsScope.GLOBAL,
jenkinsMasterKeyParameters.id,
jenkinsMasterKeyParameters.userName,
jenkinsMasterKeyParameters.key,
jenkinsMasterKeyParameters.secret,
jenkinsMasterKeyParameters.description
)
// add credential to store
store.addCredentials(domain, privateKey)
// save to disk
jenkins.save()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment