使用Jenkins Groovy脚本添加Slave

1 7月

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2016/07/01/use-jenkins-grrovy-script-add-slave/

Jenkins应该是最常用的CI/CD工具了,而Jenkins也有官方的Docker版本,可以很方便的获得一个可用的Jenkins。

但是大部分时候我们期待的是从Docker启动Jenkins之后一切环境都是准备就绪的,比如对应的插件啥的。

对于插件来说还比较简单,直接提供一个plugin.txt文件即可

credentials:1.18
maven-plugin:2.7.1

Jenkins的任务是可以在master直接运行的,但是很多时候,特别会需要很多不同构建环境的时候我们就会需要多个不同的Jenkins Slave了。

Docker-Compose可以做到启动多个容器,这样我们就可以直接在其中就行配置了,比如一个java7的Slave,一个java8的,再来一个node的,但是最后还是需要到jenkins中添加这些Slave。

Jenkins提供了Groovy脚本来实现一些配置和功能,比如需要修改执行器数量(默认为2),可以使用一些

import jenkins.model.*
Jenkins.instance.setNumExecutors(5)

对于添加Slave的脚本就稍微复杂一些,需要用到import hudson.plugins.sshslaves.*

大概的脚本如下

List<Entry> env = new ArrayList<Entry>();
  EnvironmentVariablesNodeProperty envPro = new EnvironmentVariablesNodeProperty(env);
  Slave slave = new DumbSlave(
                    "java-7-node","",
                    "/var/jenkins_home",
                    "1",
                    Node.Mode.NORMAL,
                    "agent-node-label",
                    new SSHLauncher("java-7-node",22,"jenkins","password","","","","",""),
                    new RetentionStrategy.Always(),
                    new LinkedList())
  slave.getNodeProperties().add(envPro)
  Jenkins.instance.addNode(slave)

然后将这个脚本拷贝到init.groovy.d目录

FROM jenkins
COPY slaves.groovy /usr/share/jenkins/ref/init.groovy.d/slaves.groovy

参考

https://hub.docker.com/_/jenkins/

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2016/07/01/use-jenkins-grrovy-script-add-slave/

发表评论

电子邮件地址不会被公开。