Last active
February 4, 2018 01:29
-
-
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
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 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