Last active
July 5, 2019 17:28
-
-
Save ivan-pinatti/1e2b6b54e68b0c226076c58a97045c54 to your computer and use it in GitHub Desktop.
Jenkins - Set Docker slaves plugin parameters via groovy script - #jenkins #groovy #docker #jenkins-docker #jenkins-slave #jenkins-slaves #docker-slaves
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 | |
/* | |
Please read carefully the plugin docs | |
It is required to enable the options below in the Docker service for this plugin to work: | |
DOCKER_OPTS="-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock" | |
More information at: | |
https://wiki.jenkins.io/display/JENKINS/Docker+Plugin | |
*/ | |
// imports | |
import com.nirima.jenkins.plugins.docker.DockerCloud | |
import com.nirima.jenkins.plugins.docker.DockerTemplate | |
import com.nirima.jenkins.plugins.docker.DockerTemplateBase | |
import com.nirima.jenkins.plugins.docker.launcher.AttachedDockerComputerLauncher | |
import io.jenkins.docker.connector.DockerComputerAttachConnector | |
import jenkins.model.Jenkins | |
// parameters | |
def dockerTemplateBaseParameters = [ | |
bindAllPorts: false, | |
bindPorts: '', | |
cpuShares: null, | |
dnsString: '', | |
dockerCommand: '', | |
environmentsString: '', | |
extraHostsString: '', | |
hostname: '', | |
image: 'jenkinsci/slave:latest', | |
macAddress: '', | |
memoryLimit: null, | |
memorySwap: null, | |
network: '', | |
privileged: false, | |
pullCredentialsId: '', | |
tty: true, | |
volumesFromString: '', | |
volumesString: '' | |
] | |
def DockerTemplateParameters = [ | |
instanceCapStr: '4', | |
labelString: 'docker.local.jenkins.slave', | |
remoteFs: '' | |
] | |
def dockerCloudParameters = [ | |
connectTimeout: 3, | |
containerCapStr: '4', | |
credentialsId: '', | |
dockerHostname: '', | |
name: 'docker.local', | |
readTimeout: 60, | |
serverUrl: 'unix:///var/run/docker.sock', | |
version: '' | |
] | |
// https://github.com/jenkinsci/docker-plugin/blob/docker-plugin-1.1.2/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplateBase.java | |
DockerTemplateBase dockerTemplateBase = new DockerTemplateBase( | |
dockerTemplateBaseParameters.image, | |
dockerTemplateBaseParameters.pullCredentialsId, | |
dockerTemplateBaseParameters.dnsString, | |
dockerTemplateBaseParameters.network, | |
dockerTemplateBaseParameters.dockerCommand, | |
dockerTemplateBaseParameters.volumesString, | |
dockerTemplateBaseParameters.volumesFromString, | |
dockerTemplateBaseParameters.environmentsString, | |
dockerTemplateBaseParameters.hostname, | |
dockerTemplateBaseParameters.memoryLimit, | |
dockerTemplateBaseParameters.memorySwap, | |
dockerTemplateBaseParameters.cpuShares, | |
dockerTemplateBaseParameters.bindPorts, | |
dockerTemplateBaseParameters.bindAllPorts, | |
dockerTemplateBaseParameters.privileged, | |
dockerTemplateBaseParameters.tty, | |
dockerTemplateBaseParameters.macAddress, | |
dockerTemplateBaseParameters.extraHostsString | |
) | |
// https://github.com/jenkinsci/docker-plugin/blob/docker-plugin-1.1.2/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplate.java | |
DockerTemplate dockerTemplate = new DockerTemplate( | |
dockerTemplateBase, | |
new DockerComputerAttachConnector(), | |
DockerTemplateParameters.labelString, | |
DockerTemplateParameters.remoteFs, | |
DockerTemplateParameters.instanceCapStr | |
) | |
// https://github.com/jenkinsci/docker-plugin/blob/docker-plugin-1.1.2/src/main/java/com/nirima/jenkins/plugins/docker/DockerCloud.java | |
DockerCloud dockerCloud = new DockerCloud( | |
dockerCloudParameters.name, | |
[dockerTemplate], | |
dockerCloudParameters.serverUrl, | |
dockerCloudParameters.containerCapStr, | |
dockerCloudParameters.connectTimeout, | |
dockerCloudParameters.readTimeout, | |
dockerCloudParameters.credentialsId, | |
dockerCloudParameters.version, | |
dockerCloudParameters.dockerHostname | |
) | |
// get Jenkins instance | |
Jenkins jenkins = Jenkins.getInstance() | |
// add cloud configuration to Jenkins | |
jenkins.clouds.add(dockerCloud) | |
// save current Jenkins state to disk | |
jenkins.save() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment