首页 理论教育 Jenkins服务JenkinsService实战

Jenkins服务JenkinsService实战

时间:2023-11-05 理论教育 版权反馈
【摘要】:传统上,我们会在单独的服务器上运行Jenkins。问题在于,Jenkins已经成为许多组织中的关键应用。Jenkins将其状态存储在文件系统中。第一个端口用于访问Jenkins UI,第二个端口用于master和agent之间的通信。毕竟,我们只会设置一次Jenkins,所以并没有很强的动机将其自动化。图6-2解锁Jenkins服务一旦解锁Jenkins,你将看到安装建议插件或选择适合需求的插件的选项。图6-3Create First Admin User界面Jenkins已经安装好,现在剩下的就是开始单击“Start using Jenkins”按钮。现在可以测试Jenkins故障转移是否有效。

Jenkins服务JenkinsService实战

传统上,我们会在单独的服务器上运行Jenkins。即使选择与其他应用程序共享服务器资源,部署仍然是静态的。我们想运行一个Jenkins实例(用或者不用Docker),并希望它从不发生故障,可问题在于每个应用程序迟早会失败,也许是因为进程停止,也许是因为整个节点挂掉。无论是哪种方式,Jenkins像任何其他应用程序一样,将在某个时刻停止工作。

问题在于,Jenkins已经成为许多组织中的关键应用。如果把任务的执行,或者更准确地说,把所有自动化流程的触发引入Jenkins,那么将产生一个很强的依赖。如果Jenkins没有运行,那么代码不会被构建,不会被测试,也不会被部署。当然,如果Jenkins发生故障,可以将其重启。如果其运行的服务器停止工作,也可以将其部署到其他地方。假设故障在工作时间发生,那么停机时间不会很长。从停止工作的那一刻起,一个小时,或者两个小时,甚至更长的时间过去之后,有人会发现,然后通知其他人重新启动应用或启动新的服务器。这是很长一段时间吗?这取决于你的组织的规模。一件事情被依赖的人越多,当它不起作用时损失就越大。虽然这样的停机时间及其造成的损失并不是很严重,但要知道我们已经掌握的知识和工具可以避免这种情况,所要做的就是创建另一项服务并让Swarm处理剩下的事情。

给Windows用户的说明

Git Bash会修改文件系统路径,为了防止修改,请在运行代码之前执行以下命令:

让我们创建一个Jenkins服务,在cloud-provisioning目录下运行下面的命令:

给Linux(比如Ubuntu)用户的说明

Docker Machine在其创建的VM主机内挂载用户目录,这允许我们共享文件。但是,该功能在Linux系统上运行的Docker Machine不起作用。目前,最简单的解决方法是去掉--mount参数。稍后,当介绍到持久存储时,你将看到如何更有效地挂载卷。

好消息是这个问题很快就会解决。有关讨论请参阅问题#1376(https://github.com/docker/machine/issues/1376)。一旦合并了pull reuest#2122(https://github.com/docker/machine/pull/2122),你就可以在Linux系统上使用自动挂载。

Jenkins将其状态存储在文件系统中。因此,我们先在主机上创建一个目录,并将它用作Jenkins的home目录。由于我们位于主机用户的其中一个子目录中,因此docker/jenkins目录将被挂载到我们创建的所有机器上。

接下来创建该服务,它将内部端口8080公开为8082,并公开了内部端口50000。第一个端口用于访问Jenkins UI,第二个端口用于master和agent之间的通信。我们还将URL前缀定义为/jenkins,并挂载了jenkins主目录(见图6-1)。最后预留了300 MB的内存。

下载镜像后,service ps命令的输出如下(为简洁起见,删除了ID):

图6-1 有jenkins服务的生产集群

Jenkins 2改变了设置流程。虽然以前的版本允许我们在没有任何配置的情况下运行,但新版Jenkins强制我们手动执行一些流程。不幸的是,在撰写本文时,还没有好的API来帮助我们实现这个流程的自动化。虽然可以使用一些技巧,但与其引入的额外复杂的流程相比,这些好处还不够。毕竟,我们只会设置一次Jenkins,所以并没有很强的动机将其自动化(至少在Jenkins提供配置API之前)。

让我们打开UI:

给Windows用户的说明

Git Bash可能不支持open命令,如果真是这样,则可以执行docker-machine ip <SERVER_NAME>来查找机器的IP,然后直接在浏览器中打开URL,比如上面的命令应该被替换为docker-machine ip swarm-1,如果命令输出的是1.2.3.4,则应该在浏览器里打开http://1.2.3.4:8082/jenkins。

你会注意到的第一件事是要设置管理员密码,不少企业用户要求加强安全性,没有初始化会话的话,Jenkins将无法被访问。如果你刚接触Jenkins,或者刚接触第二版,可能想会知道密码是什么。密码被输出到日志(这里是标准输出stdout)以及文件secrets/initialAdminPassword中,并将在安装过程结束时删除。

现在来看看secrets/initialAdminPassword文件的内容:

输出是一个表示临时密码的长字符串。请复制它,返回到用户界面,将其粘贴到管理员密码字段,然后单击“Continue”(继续)按钮,如图6-2所示。(www.xing528.com)

图6-2 解锁Jenkins服务

一旦解锁Jenkins,你将看到安装建议插件或选择适合需求的插件的选项。推荐的插件适合最常用的场景,所以将使用该选项。

请点击“Install suggested plugins”按钮。

一旦插件被下载并安装完成,就可以看到Create First Admin User的界面。请把用户名和密码都设置为admin,剩下的字段请随意填写。填好之后,点击“Save and Finish”按钮,如图6-3所示。

图6-3 Create First Admin User界面

Jenkins已经安装好,现在剩下的就是开始单击“Start using Jenkins”按钮。现在可以测试Jenkins故障转移是否有效。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈