您的当前位置:首页正文

Jenkins详细教程

来源:化拓教育网
Jenkins详细教程

⼀、jenkins是什么?

Jenkins是⼀个开源的、提供友好操作界⾯的持续集成(CI)⼯具,起源于Hudson(Hudson是商⽤的),主要⽤于持续、⾃动的构建/测试软件项⽬、监控外部任务的运⾏(这个⽐较抽象,暂且写上,不做解释)。Jenkins⽤Java语⾔编写,可在Tomcat等流⾏的servlet容器中运⾏,也可独⽴运⾏。通常与版本管理⼯具(SCM)、构建⼯具结合使⽤。常⽤的版本控制⼯具有SVN、GIT,构建⼯具有Maven、Ant、Gradle。

⼆、CI/CD是什么?

CI(Continuous integration,中⽂意思是持续集成)是⼀种软件开发时间。持续集成强调开发⼈员提交了新代码之后,⽴刻进⾏构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在⼀起。借⽤⽹络图⽚对CI加以理解。

CI

CD(Continuous Delivery, 中⽂意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运⾏环境(类⽣产环境)中。⽐如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续⼿动部署到⽣产环境。下图反应的是CI/CD 的⼤概⼯作模式。

CI/CD

三、使⽤Jenkins进⾏PHP代码(单元)测试、打包。

Jenkins是⼀个强⼤的CI⼯具,虽然本⾝使⽤Java开发,但也能⽤来做其他语⾔开发的项⽬CI。下⾯讲解如何使⽤Jenkins创建⼀个构建任务。 登录Jenkins, 点击左侧的新建,创建新的构建任务。

跳转到如下界⾯。任务名称可以⾃⾏设定,但需要全局唯⼀。输⼊名称后选择构建⼀个⾃由风格的软件项⽬(其他选项不作介绍)。并点击下⽅的确定按钮即创建了⼀个构建任务。之后会⾃动跳转到该job的配置页⾯。

新建⾃由风格的软件项⽬

下图是构建任务设置界⾯,可以看到上⽅的⼏个选项\"General\源码管理\", \"构建触发器\",\"构建环境\", \"构建\", \"构建后操作\"。下⾯逐⼀介绍。

1.General

General是构建任务的⼀些基本配置。名称,描述之类的。

General

项⽬名称: 是刚才创建构建任务步骤设置的,当然在这⾥也可以更改。描述: 对构建任务的描述。

丢弃旧的构建: 服务器资源是有限的,有时候保存了太多的历史构建,会导致Jenkins速度变慢,并且服务器硬盘资源也会被占满。当然下⽅的\"保持构建天数\" 和 保持构建的最⼤个数是可以⾃定义的,需要根据实际情况确定⼀个合理的值。

其他⼏个选项在这⾥不做介绍,有兴趣的可以查看Jenkins\"帮助信息\", 会有⼀个⼤概的介绍。不过这些\"帮助信息\"都是英⽂的。

点击右⽅的这些\"问号\"查看\"帮助信息\"

2.源码管理

源码管理就是配置你代码的存放位置。

源码管理

Git: ⽀持主流的github 和gitlab代码仓库。因我们的研发团队使⽤的是gitlab,所以下⾯我只会对该项进⾏介绍。Repository URL:仓库地址

Credentials:凭证。可以使⽤HTTP⽅式的⽤户名密码,也可以是RSA⽂件。 但要通过后⾯的\"ADD\"按钮添加凭证。Branches to build:构建的分⽀。*/master表⽰master分⽀,也可以设置为其他分⽀。源码浏览器:你所使⽤的代码仓库管理⼯具,如github, gitlab. URL:填⼊上⽅的仓库地址即可。

Version: 8.7 这个是我们gitlab服务器的版本。Subversion:就是SVN,这⾥不作介绍。

3.构建触发器

构建触发器,顾名思义,就是构建任务的触发器。

触发远程构建(例如,使⽤脚本): 该选项会提供⼀个接⼝,可以⽤来在代码层⾯触发构建。这⾥不做介绍,后期可能会⽤到。Build after other projects are built: 该选项意思是\"在其他projects构建后构建\"。这⾥不作介绍,后期可能会⽤到该选项。

Build periodically: 周期性的构建。很好理解,就是每隔⼀段时间进⾏构建。⽇程表类似 linux crontab书写格式。如下图的设置,表⽰每隔30分钟进⾏⼀次构建。

周期构建

Build when a change is pushed to GitLab:当有更改push到gitlab代码仓库,即触发构建。后⾯会有⼀个触发构建的地址,⼀般被称为webhooks。需要将这个地址配置到gitlab中,webhooks如何配置后⾯介绍。这个是常⽤的构建触发器。

Poll SCM:该选项是配合上⾯这个选项使⽤的。当代码仓库发⽣改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发⽣改动。

⼗分钟检查⼀次

4.构建环境

构建环境就是构建之前的⼀些准备⼯作,如指定构建⼯具(在这⾥我使⽤ant)。

构建环境中的构建⼯具

With Ant:选择这个⼯具,并指定ant版本和jdk版本。这两个⼯具的版本我都事先在服务器上安装,并且在jenkins全局⼯具中配置好了。其他选项不作介绍,同样可以查看\"帮助信息\" 获得使⽤帮助。

5.构建

选择下⽅的增加构建步骤。

增加构建步骤

可以选择的项很多。这⾥就介绍\"Invoke Ant\" 和\"Execute shell\".

Eexcute shell: 执⾏shell命令,该⼯具是针对linux环境的,windows环境也有对应的⼯ 具\"Execute Windows batch command\"。 在构建之前,可能我们需要执⾏⼀些命令,⽐如压缩包的解压之类的。为了演⽰,我就简单的执⾏ \"echo $RANDOM\" 这样的linux shell下⽣产随机数命令。Invoke Ant:Ant是⼀款java项⽬构建⼯具,当然也能⽤来构建php。

Ant Version: 选择Ant版本。这个ant版本是安装在jenkins服务器上的版本,并且需要在jenkins\"系统⼯具\"中设置好。Targets:要执⾏的操作,⼀⾏⼀个操作任务。以上图为例,build是构建,tar是打包。

Build File: 是Ant构建的配置⽂件,如果不指定,则是在项⽬路径下的workspace⽬录中的build.xml。build.xml⽂件具体怎么配置,后⾯再细讲。properties: 设定⼀些变量,这些变量可以在build.xml 中被引⽤。

Send files or execute commands over SSH:发送⽂件到远程主机或执⾏命令(脚本)

Name: SSH Server的名称。SSH Server可以在jenkins-系统设置中配置。source files: 需要发送给远程主机的源⽂件。

Remove prefix: 移除前⾯的路径。如果不设置这个参数,则远程主机会⾃动创建构建源 source files 包含的那个路径。Remote directory: 远程主机⽬录。

Exec command:在远程主机上执⾏的命令,或者执⾏的脚本。

6.构建后操作

构建后操作,就是对project构建完成后的⼀些后续操作,⽐如⽣成相应的代码测试报告。

邮件通知

Publish Clover PHP Coverage Report:发布代码覆盖率xml格式的⽂件报告。路径会在\"build.xml\"⽂件中定义

Publish HTML reports:发布代码覆盖率的HTML报告。 Report Crap: 发布crap报告。

E-mail Notification: 邮件通知,构建完成后发邮件到指定的邮箱。以上配置完成后,点击保存。

7.其他相关配置

SSH Server配置

登录jenkins -- 系统管理 -- 系统设置配置请看下图

SSH SERVER

SSH Servers: 由于jenkins服务器公钥⽂件我已经配置好,所以之后新增SSH Servers 只需要配置这⼀项即可。 Name: ⾃定义,需要全局唯⼀。HostName: 主机名,直接⽤ip地址即可。

Username: 新增Server的⽤户名,这⾥配置的是root。

Remote Directory: 远程⽬录。jenkins服务器发送⽂件给新增的server默认是在这个⽬录。

Ant 配置⽂件 \"build.xml\"

接下来讲解Ant 构建配置⽂件\"build.xml\"。 之所以是build.xml 这是因为官⽅惯例。就好⽐任何编程语⾔的⼊门都会是打印\"Hello world\". 你也可以⽤其他名称代替\"build.xml\" .

下⾯针对配置⽂件\"build.xml\" 关键配置进⾏说明。

project name就是项⽬名称,和jenkins所创建的对应。

target name=\"build\" 就是构建的名称,和jenkins构建步骤 那⾥的targets对应。depends指明构建需要进⾏的⼀些操作。property ⽤来设置变量。

fileset 这⼀⾏指明了⼀个⽂件夹,⽤include来指明需要包含的⽂件,exclude指明不包含的⽂件,\"tar\"即是打包这个⽂件夹中匹配到的⽂件。

下⾯的这些target都是⼀些实际的操作步骤,⽐如make_runtime这个\"target\" 就是创建了⼀些⽬录。phpcs就是利⽤PHP_CodeSniffer这个⼯具 对PHP代码规范与质量检查⼯具。

最后这个target \"tar\" 就是打包⽂件。因为上⾯的build 并没有包含这个target,所以默认情况下,执⾏build是不会打包⽂件的,所以在jenkins project配置界⾯,Ant构建那⼀步的targets,我们才会有\"build\" 和 \"tar\" 这两个targets。如果build.xml 中 \"build\"这个target depends中已经包含\"tar\" , 就不需要在jenkins中增加\"tar\"了。

其他⼀些target 都是利⽤⼀些⼯具对php代码的操作,⽐如phpunit是进⾏php单元测试。这⼀些⽅⾯我没有深⼊的研究,只是进⾏了⼀些简单的配置,毕竟不是这⽅⾯的专业⼈⼠。

配置 Gitlab webhooks

在gitlab的project页⾯ 打开settings,再打开 web hooks 。点击\"ADD WEB HOOK\" 添加webhook。把之前jenkins配置中的那个url 添加到这⾥,添加完成后,点击\"TESTHOOK\"进⾏测试,如果显⽰SUCCESS 则表⽰添加成功。

配置phpunit.xml

phpunit.xml是phpunit这个⼯具⽤来单元测试所需要的配置⽂件。这个⽂件的名称同样也是可以⾃定义的,但是要在\"build.xml\"中配置好名字就⾏。默认情况下,⽤\"phpunit.xml\则不需要在\"build.xml\"中配置⽂件名。

build.xml中phpunit配置

fileset dir 指定单元测试⽂件所在路径,include指定包含哪些⽂件,⽀持通配符匹配。当然也可以⽤exclude关键字指定不包含的⽂件。

四、进⾏jenkins project 构建

第⼀次配置好jenkins project之后,会⾃动触发⼀次构建。此后,每当有commit 提交到master分⽀(前⾯设置的是master分⽀,也可以设置为其他分⽀),就会触发⼀次构建。当然也可以在project页⾯⼿动触发构建。点击左边的\"⽴即构建\" ⼿动触发构建。

⼿动触发构建

五、构建结果说明

构建状态

Successful蓝⾊:构建完成,并且被认为是稳定的。Unstable黄⾊:构建完成,但被认为是不稳定的。Failed红⾊:构建失败。Disable灰⾊:构建已禁⽤

构建稳定性

构建稳定性⽤天⽓表⽰:晴、晴转多云、多云、⼩⾬、雷阵⾬。天⽓越好表⽰构建越稳定,反之亦然。

构建历史界⾯

console output: 输出构建的⽇志信息

六、jenkins权限管理

⾄此,就可以⽤jenkins周⽽复始的进⾏CI了,当然jenkins是⼀个强⼤的⼯具,功能绝不仅仅是以上这些,其他⽅⾯要是以后⽤到,我会更新到这篇⽂章中。有疑问欢迎在下⽅留⾔。

最后,放上⼀张Jenkins的思维导图

作者:哥本哈根⽉光

链接:https://www.jianshu.com/p/5f671aca2b5a来源:简书

著作权归作者所有。商业转载请联系作者获得授权,⾮商业转载请注明出处。

因篇幅问题不能全部显示,请点此查看更多更全内容