杨峰 译 分布式实验室

使用Docker容器搭建Jenkins集群_Jav

本文使用Jelastic Cloud搭建了Jenkins作业环境,包括手动部署和自动部署两个方式,对Jelastic Cloud感兴趣的用户,可以尝试注册一个免费账户,进行试验。

  • 如果不太了解Jenkins,可以先了解如何”手动设置Jenkins”一节。

  • 如果想自动部署,可以去了解 “自动化”一节。

Jenkins,由于其管理大量节点,以及执行器(executor)对大量创建和部署提供响应的能力成为很热的用于自动持续集成的工具。每个执行器都可以运行Jenkins作业,从而避免了Jenkins服务器上运行所有任务的压力。

Jenkin运行作业的能力不应该被硬件,OS或者作业运行在哪里所限制,这样Jenkins作业机可以在任何设备上,在其他网络上(只要网络之间通过HTTP可以交流),在其它操作系统上,例如Windows和Solaris,以及其它任何强劲的硬件上运行。例如,我们可以用Jenkins为Solaris 9和其它Java 8应用编译一个C++编写的应用,因为Solaris9没有Java8发行版,如何设置一个作业机是很关键的。

尽管有内置方法配置Jenkins作业机,但是部署多遍是一个很乏味的工作,而且很容易出问题。因此,我们会使用Jenkins Swarm插件(https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin)来安装,这样作业机可以自动发现主机并且自主注册到其中。本示例中,我们会使用Docker和Jelastic云,因为客制化docker映像,操作Jelastic控制面板,生成运行环境很容易。

Docker最初是一个为Linux分布式应用提供并行虚拟化的方案,因为很成功,Docker成为业界一个事实上的标准,社区有若干个映像,存放在不同注册器中。因为这个原因,若干云提供商都在其产品中内置了Docker方案,例如Jelastic。本例中,我们使用Jenkins Swarm和Jenkins Swarm 作业机的Docker映像。

Jelastic是一个使用容器的云PaaS平台,可以在其中运行Docker容器。本文中,我们会使用Jelastic控制面板生成一个Jenkins服务端以及两个Jenkins作业机。如果不想做这些很细致的动手工作,可以在控制面板中直接导入一个JSON文件生成相关环境。

使用Docker容器搭建Jenkins集群_Jav_02

Docker镜像

本文中的示例,我们会使用某些(客制化)Docker镜像。首先,我们使用 jelastic/jenkins-swarm 作为官方的客制化Docker镜像,内置了Jenkins Swarm插件。除此之外,我们使用从Carlos Sanchez来的csanchez/jenkins-swarm-slave 镜像来构建 jelastic/jenkins-swarm-slave 镜像,在Jenkins-slave.sh脚本中写入swarm-client要用的参数,并且写入和开始和停止函数来启停这些函数。

使用Docker容器搭建Jenkins集群_Jav_02

手动设置Jenkins集群

手动设置Jenkins集群是一个很艰巨的任务,因为Jelastic控制台对于设置环境来说需要动手能力很强。我们可以通过以下步骤设置Jenkins集群:

1. 点击Jelastic控制面板左上角New Environment按钮,打开Docker标签。

使用Docker容器搭建Jenkins集群_Jav_04

2. 然后,点击 Select Container 按钮,搜索 jelastic/jenkins-swarm。

使用Docker容器搭建Jenkins集群_Jav_05

3. 选择映像,点击 Extra 按钮,选择映像 jelastic/jenkins-swarm-slave。

使用Docker容器搭建Jenkins集群_Jav_06

4. 将Jenkins作业机容器和Jenkins服务器连接起来。点击在configuration部分的“Links”,点击Add,设置Jenkins的别名。然后保存,应用。

使用Docker容器搭建Jenkins集群_Jav_07

5. 本示例中,可以每个Docker映像使用一个节点和默认cloudlets。最后,命名环境,点击Create按钮。

使用Docker容器搭建Jenkins集群_Jav_08

几分钟后,Jenkins集群就配置好了。可以在浏览器中点击Open访问了。

使用Docker容器搭建Jenkins集群_Jav_09
使用Docker容器搭建Jenkins集群_Jav_10


使用Docker容器搭建Jenkins集群_Jav_02

自动化

上一节中有足够步骤实现自动部署。在Jelastic平台上,可以导入JSON定义的环境变量,以下步骤中详细定义。

1. 点击 New environment 按钮旁边的下拉键,选择导入。

使用Docker容器搭建Jenkins集群_Jav_12

2. 然后,去URL标签页,添加如下URL,点击导入:https://raw.githubusercontent.com/jelastic-jps/jelastic-jenkins-cluster/master/jenkins-cluster.json。

使用Docker容器搭建Jenkins集群_Jav_05

3. 给出环境名,点击Install按钮,高效完成。

使用Docker容器搭建Jenkins集群_Jav_14

4. 导入JSON文件后,可以在浏览器中查看节点状态。

使用Docker容器搭建Jenkins集群_Jav_15

现在,可以使用Jenkins作业机了(不需要复杂的命令行,错综复杂的配置,以及纠结的排错)。Jelastic提供了不同方法实现这些,无论是自动化还是手动部署。

GitHub repositories:

  • https://github.com/jelastic-jps/jenkins-swarm

  • https://github.com/jelastic-jps/jenkins-swarm-slave-docker

  • https://github.com/carlossg/jenkins-swarm-slave-docker

  • https://github.com/jelastic-jps/jelastic-jenkins-cluster

可以自己去尝试使用基于Docker容器的Jenkins环境,非常简单。只需要免费注册Jelastic账户即可。

本文为翻译文章,点击阅读原文链接可查看原文。