Skip to content

第42讲:JenkinJob管理 ​

本课时我们开始进入 Jenkins Job 管理的学习。我们在上一课时已经搭建好了一个崭新的 Jenkins,但 Jenkins 部署完成后,还需要做一些基础的配置。

修改系统配置 ​

比如我们要在 Jenkins 里把默认的 Shell 改成 bash,默认的 sh 是一个老的 Shell 环境,很多高级功能其实是不具备的,而 bash 是目前使用最多的。有的时候,你写脚本可能会遇到一些问题,所以建议你把默认的 Shell 改成 bash。

默认的管理员邮箱也可以修改,还有服务器默认的域名。除此之外,还有安全、时区、slave 节点。所有的全局性的配置都可以在 Jenkins manager 中管理,比如各种细节参数,你都可以在其中进行相应配置。

然后是安全,Jenkins 启动之后默认有一个自己的安全机制,无论你是要改成自己公司关联的安全认证体系,还是基于项目设置权限,都可以进行配置。

时区配置相对来说会比较复杂一点,在 Jenkins 里面配置时区需要修改系统的配置。如果你使用 docker 安装,可以用这样一个简单的办法来处理,首先删除原来的 docker 实例,接着在 docker 实例启动过程中加一个参数:-e JAVA_OPTS,在里面设置一个数据,比如改成北京时间,这个时候,你的 Jenkins 就可以自动更改为指定的本地时间。如果你没有设置,它默认显示的是美国时间,会影响到你的使用。

插件管理可以用于安装、更新插件,必要的时候需要配置代理以加速插件的安装。可以在 Available 里挑选需要的插件,常用的的插件是 git、pipeline、blueocean等,更多插件按需安装即可。

还有一个部分是 slave 节点,它在 Jenkins 的 Nodes 模块下面,你可以自己创建一个新的节点,这个节点主要是为了执行 job。通常 Jenkins所在主机称之为 master,是一个主控机,它要管理很多 job,所以它本身的任务比较重,需要把具体的job执行放到分布式的node上。

通常对每一个 job、每个任务的执行,我们不会在主机上直接执行,而是通过多台机器来进行分担。不同的机器,比如 Windows、Mac、Linux,它们的职责是不一样的,你可以通过节点来管理所有需要控制的资源。那么 slave 节点是在 manager Jenkins 下面的 manager nodes and clouds 里面,你可以写上自己的设备,比如这是我写的一个设备。后面你可以通过把任务与节点进行关联,在特定的节点进行运行。

slave 节点的连接方法,在前面我们启动 docker 的时候,用到了一个叫 50000 的端口,这个端口其实就是在这个地方使用的。8080 是 Jenkins 默认的对外访问的 UI 交互地址,而 50000 端口主要是 slave 节点与 Jenkins 之间进行通信的。创建一个节点之后,你可以使用 8080 端口连接 Jenkins,然后,通过 50000 端口建立真正的连接,所以你要确保这两个端口一定是开启并且配对的,不然你的 slave 是连接不上的。

一个 job 的组成部分 ​

了解了一个系统的基本设置之后,我们来看一看一个基本 job 的重要组成部分。从图上可以看到,一个基本的 job 配置通常分为五大模块:

  • 一个叫 General,是系统的通用配置;
  • 一个叫 SCM,是源代码管理系统;
  • 第三个是触发器,它最重要的特征就是可以根据研发的代码提交,自动执行对应的 job,所以这个 build trigger 触发器是一个比较重要的点,就有了它我们才可以自动分析代码,根据代码的变更自动触发一些行为;
  • 还有一个是 build 构建,我们可以在这里面完成对系统的预设行为的构建,比如我要执行一个什么样的命令,跑哪一个测试用例,你可以在 build 里面来进行设置;
  • 还有一个叫 Post-build Actions,测试完成之后我需要分析汇总报告,你可以在这个地方进行设置。

我们分别来看一下每个部分的设置。

首先是项目的通用设置,主要是用来配制系统的描述信息。然后是项目的其他配置,比如我的任务的当前状态是什么?我要在哪个机器上来执行?这些相关的配置都可以在这个地方来进行约束,这就叫 job 的通用配置。

第二个叫源代码控制 SCM,目前使用最多的是 git,其他的版本管理系统也都是支持的,只需要安装对应的插件即可。你可以在仓库里面写上 git 地址,然后去拉取分支进行构建。如果这个代码将来需要浏览,也可以配置 GitHub 地址,通常我们用的就是前两个,给另一个项目的地址,给另一个具体的分支。还有一些更细节的配置,比如代码 check 到本地之后,本地的文件名要不要放到子目录下面?你可以通过额外的行为来进行配置。

第三个是 biuld trigger,trigger 触发器可以允许你通过多种方式去触发某个任务,比如远程触发,通过脚本的方式发一个请求过来,系统就会自动执行对应任务。还有一个叫周期性构建 build,你可以写上一个时区,他用的时间格式跟系统里面的 crontab 是一样的格式,总共有 5 个卡位符,每个卡位符你可以用 * 表示其中的任何一个时间我都要执行。它有自己的语法,除以一个数字代表每隔多久执行一次。h 相对来说比较特殊一点,如果你所有的job都写 *,系统会在某一个整点时刻密集触发,会让系统的负载比较大,所以通常 Jenkins 建议你使用 h,系统会根据你的情况自动分配,把时间错开。

下面还有一个 poll scm,就是从我的代码管理里面定期进行拉取,看一下有没有新的代码变更,如果有代码变更,我将会触发一次构建;如果没有代码变更,它就等下一次检查。

我们在看第四个 biuld,主要是用来执行真正的任务,build 里面是一个基础的构建环境,再往下是说在执行过程中,执行哪些具体的命令。其实你可以在 add build step 里面添加更多功能,比如执行 Shell,执行某个命令,这里面可以通过插件扩展非常多的可执行的步骤。用得最多的仍然是执行 Shell,执行 Shell 可以让我们执行自动化脚本完成很多复杂工作。

最后一个 Post-biuld Actions,它的主要作用是在所有的结果执行之后,可以完成结果的汇总、分析、出报告,甚至发邮件、提醒、报警、自动提交 bug。在 Add Post-biuld Actions 里面有非常多的任务,你也可以通过插件继续扩展。

那么有了这些知识点,接下来你就可以去创建自己的 job 了,你可以看到我的 Jenkins 上的测试环境,创建了一个小小的 job,按照刚才的配置已经配置完成,你可以在这里触发构建,构建之后,job 就会多了一层执行分析结果。

具体的每个项目怎么配置呢?比如 ui 分化我怎么集成?接口测试怎么集成?我们会放在下一节课来给你去讲,比如测试结果,你可以点这个图了解一下,这次构建的有多少个测试用例?每个测试用例是成功还是失败?你都可以在这个地方查看。