Skip to content

Instantly share code, notes, and snippets.

@ivan-pinatti
Last active February 4, 2018 01:29
Show Gist options
  • Save ivan-pinatti/4872fa057285667b90ee49ca18a726d5 to your computer and use it in GitHub Desktop.
Save ivan-pinatti/4872fa057285667b90ee49ca18a726d5 to your computer and use it in GitHub Desktop.
Jenkins - Set Slack integration plugin parameters via groovy script - #jenkins #groovy #slack
#!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 slackCredentialParameters = [
description: 'Slack Jenkins integration token',
id: 'slack-token',
secret: '1234567890asdfghjklqwert'
]
def slackParameters = [
slackBaseUrl: 'https://mycompany.slack.com/services/hooks/jenkins-ci/',
slackBotUser: 'true',
slackBuildServerUrl: 'https://jenkins.mycompany.com:8083/',
slackRoom: '#jenkins',
slackSendAs: 'Jenkins',
slackTeamDomain: 'mycompany',
slackToken: '',
slackTokenCredentialId: 'slack-token'
]
// 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()
// get Slack plugin
def slack = jenkins.getExtensionList(jenkins.plugins.slack.SlackNotifier.DescriptorImpl.class)[0]
// define secret
def secretText = new StringCredentialsImpl(
CredentialsScope.GLOBAL,
slackCredentialParameters.id,
slackCredentialParameters.description,
Secret.fromString(slackCredentialParameters.secret)
)
// define form and request
JSONObject formData = ['slack': ['tokenCredentialId': 'slack-token']] as JSONObject
def request = [getParameter: { name -> slackParameters[name] }] as org.kohsuke.stapler.StaplerRequest
// add credential to store
store.addCredentials(domain, secretText)
// add Slack configuration to Jenkins
slack.configure(request, formData)
// save to disk
slack.save()
jenkins.save()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment