一. 通信协议

为了master和agent能够正常通信,连接的建立必须是双向的。

  • SSH: master通过标准的SSH协议连接slave。
  • Java Web Start: Java 应用在agent 主机上启动,Master和agent通过TCP建立连接。 这种方法往往是在agnet在防火墙内部,master不能发起连接的情况下使用。
  • Windows service: 这种方法是注册 agnet在远端主机上作为一个服务。该方法设置比较繁琐,且需要图形接口的支持。

二. 设置 agent

关联slaves到master的不同方式:

  • 静态和动态对比:静态添加slave比较简单。但缺点就是假如需要更多或者更少的slave nodes的话,我们还需要手工修改。一个最好的方式就是动态的添加。
  • 指定和通用目的:就是对某个agent去做某些特定的功能或者一个agent可以构建所有的任务。

三. 常 用的四种配置方法

  • Permanent agents
  • Permanent Docker agents
  • Jenkins Swarm agents
  • Dynamically provisioned Docker agents

1. permanent agents

依次点击【Manage Jenkins】--【Manage Nodes】—【New Node】,如下图

持久agent的缺点就是需要针对不同项目类型维护多个slave 类型。解决方案如下图所示:

2. Permanent Docker agents

这个解决方案的理想方法是永久的添加常规目的的slaves. 每个slave都有相同的配置。

这种方法就是在构建时在管道中指定需要的docker image.

pipeline {
      agent {
           docker {
                image 'openjdk:8-jdk-alpine'
           }
      }
      ...

}

解决方案如下图所示:

3. Jenkins Swarm agents

以上的添加在往往需要扩容大量的salve 主机时比较麻烦。Jenkins swarm允许去动态的添加slave(不需要在jenkins master中配置它们)

(1)在Jenkins中安装【Self-Organizing Swarm Plug-in Modules】插件


(2)运行Jenkins Swarm slave应用在要扮演Jenkins slave的所有主机上。 使用swarm-client.jar应用。下载地址:https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin.

$ java -jar swarm-client.jar -master <jenkins_master_url> -username <jenkins_master_user> -password <jenkins_master_password> -name jenkins-swarm-slave-1

(3)在成功运行命令后,应该出现如下图所示:

4. 通过Docker agent动态的提供。

其它的办法就是在每次构建开始时,jenkins去动态的创建一个新的agent.根据构建工作的数量动态的调整slave的数量。

配置步骤:

(1)安装Docker插件


(2)打开【Manage Jenkins】。
(3)点击【Configure System】链接。
(4)点击添加新的云,选择Docker.


(5)添加Docker 模板

最新文章

  1. [Android]使用自定义JUnit Rules、annotations和Resources进行单元测试(翻译)
  2. Cadence Allegro元件封装制作流程
  3. nginx负载均衡的实现
  4. aptana studio 3 自动换行(无需插件)
  5. cojs 自己出的题目 解题报告
  6. 3.MySQL之创建/删除用户
  7. html语言中的meta元素
  8. 使用bootstrap建立响应式网页——通栏轮播图(carousel)
  9. 内功心法 -- java.util.ArrayList&lt;E&gt; (5)
  10. Delphi中常用字符串处理函数
  11. I/O模型系列之五:IO多路复用 select、poll、epoll
  12. archer docker安装部署
  13. 程序员跳槽有一份好的简历,offer让你拿到手软
  14. 使用pycharm调试django项目
  15. ie浏览器get url返回404问题
  16. M1事后分析报告
  17. dip和px的相互转化
  18. Python3之pymysql导入mysql
  19. 《编写高质量代码改善JavaScript程序的188个建议》读书笔记
  20. 原来css可以直接覆盖内联style

热门文章

  1. bzoj 1004 组合
  2. 防止apk反编译的技术分析浅谈--内存修改器篇
  3. 查看git拉取地址
  4. duilib 修复CTreeViewUI复选功能判断不准确的bug
  5. spring整合hibernate时报错:org.hibernte.engine.transaction.spi.transactioncontext
  6. [DeeplearningAI笔记]序列模型3.7-3.8注意力模型
  7. Tensorflow BatchNormalization详解:3_使用tf.layers高级函数来构建带有BatchNormalization的神经网络
  8. /etc/rc.d/里文件的作用
  9. git入门篇shell
  10. ④ 设计模式的艺术-10.装饰(Decorator)模式