为了减少构建队列,你可以增加构建从机。主服务器将会通过轮询或者绑定特定构建到特定从机的方式,将构建发送给从机。中培专家龚老师在这里进行了详细介绍。
这样做的原因一般是有些构建对托管的操作系统有一定的需求。
构建从机可以用来增加并行构建效率。它们也能用来在不同的操作系统上构建软件。
例如,你可以有一个Linux的Jenkins主服务器和使用Windows构建工具的Windows从机来构建组件。为Apple Mac构建软件,最好用一个Mac作为构建从机,尤其是Apple对于在虚拟服务器上部署操作系统有很古怪的规则。
本质上,Jenkins主机给从机发送命令,必须有一种途径。这种途径可以是经典的SSH方法,并且Jenkins提供内建的SSH功能。你也可以通过从机从主机上下载一个Java JNLP客户端的方式来启动Jenkins从机。如果构建从机不提供SSH服务,这种做法就很实用。
【跨平台编译的注意事项
尽管可以使用Windows构建从机,有些时候用Linux来构建Windows软件要来得更容易些。诸如GCC那样的C编译器可以通过配置使用MinGW包来进行跨平台编译。
是否这样做更容易取决于要构建的软件。一个大系统通常由许多不同的部分组成,一些部分可能包含了不同平台的本地代码。
这儿有几个例子:
本地的android组件。
本地为了性能而用C语言编写的服务器组件。
本地为了性能而用C或C++语言编写的客户端组件。
本地代码的多少有些取决于你所在的企业的性质。电信产品一般有许多的本地代码,例如视频编解码器和硬件接口代码。银行系统可
能有用本地代码编写的高速消息系统。这样做的一方面是件很重要的事:能够在构建服务器上便捷地构建
所有使用中的代码。否则,就会有一种不良倾向,那就是某些代码只能在几台吃灰的机器上构建。这是我们需要避免的风险。
企业里的系统需要的究竟是什么,只有你自己才知道。
主机上的软件
视构建的复杂性而定,你可能需要在构建服务器上安装许多不同类型的构建工具。记住Jenkins主要是用来触发构建的,它们并不自己构建。这个任务被委托给了例如Maven或Make这样的构建系统。
以我的经验来看,有一个基于Linux操作系统的主机是最方便的。大多数构建系统都可以在发行版库里找到,直接从那里安装是非常简便的。
部署服务器上的应用服务器会持续更新,为了让构建服务器也总是最新,你可以直接使用同一台部署服务器来做构建。
触发器
你可以设置一个定时器来触发构建,或者轮询代码库直到发生变更时才构建。
可以同时使用这两种方法:
最常用的是轮询Git库,这样每次提交都会触发构建。可以触发比持续构建更久也更加彻底的每夜构建。由于这些构建发生在假定无人工作的夜晚,慢一点也关系不大。 一个上游的构建可以触发一个下游的构建,你还能让一个任务里的成功构建触发另一个任务。
任务链和构建流水线
能把任务串起来通常都是非常有用的。最简单的方式是:当第一个任务成功完成时,会通过事件触发第二个任务。几个任务可以用这种方式在链中传递。这样的一个构建链一般足以胜任大多数工作。有时构建步骤的可视化和细粒度控制任务链都是我们想要的。
在Jenkins术语里,链上的第一个构建被称为上游构建,第二个被称为下游构建。
虽然这种链式构建的方式一般够用,但还是有可能需要更好地控制构建链。这样的构建链通常被称为流水线或工作流。
有许多为Jenkins创建更好流水线的插件,它们的数量表明了确实有改进这方面的大量需求。
多任务插件和工作流插件是其中的两个例子。
工作流插件更加先进,它有一个优势是可以用Groovy DSL来描述而不是在web界面上改来改去。
工作流插件是CloudBees主推的,它现在是Jenkins最主要的贡献者。
想了解更多IT资讯,请访问中培教育官网:中培教育