Created
July 17, 2020 08:22
-
-
Save gpie3k/4a19ef4878dbacf877d137adc10b1a9b to your computer and use it in GitHub Desktop.
jenkins scripts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!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