集成开发组Jenkins配置及使用指南

字数 2229阅读 270

集成开发组Jenkins配置及使用指南

什么是Jenkins

Jenkins 是一个可扩展的持续集成引擎,使用者基于此引擎可以持续、自动地构建/测试软件项目。
目前集成开发组部署在Jenkins上的项目有:

  • AJX3.0 不同版本打包以及在线log发布项目
  • 活动小组在线页面项目
  • 高德地图旧版本端内离线,在线项目

Jenkins安装及启动方式

Jenkins具体安装及首次登陆方式见: http://www.cnblogs.com/zhanggui/p/6227832.html ,此处不予赘述。
注:集成开发组使用的Jenkins运行在tomcat容器下,使用管理员权限(必须)启动tomcat目录下startup.sh脚本可以启动tomcat服务,并自动的启动Jenkins,如图所示运行如下指令

sudo /Users/admin/tomcat-8.5.6/bin/startup.sh

Paste_Image.png

等待片刻,当屏幕下方出现java图标时证明Jenkins启动无误,使用浏览器访问主机的localhost:8000/jenkins/地址,可以看到登录界面如图所示:

Paste_Image.png

访问Jenkins及进行系统设置

集成开发组的Jenkins主机地址为http://30.28.10.115:8000/jenkins/ ,点击访问并登陆后可以看到如下界面(非管理员账号注册后需要向管理员申请权限),其中左侧为系统选项,右侧列表为此Jenkins所包含的所有任务(本次示例使用的账号为管理员账号,所以可以看到所有项目并进行设置,作为非管理员登录界面会有所不同,后文会详述):

<div align="center"><img src="http://upload-images.jianshu.io/upload_images/3125468-23dd040c5773e982.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="400" height="400" ></img></div>

点击左侧系统管理,进入系统管理页面,此处列出了Jenkins的所有配置项,只有拥有管理员权限的用户可以对系统的配置项进行修改。

Paste_Image.png

1. 系统访问权限设定

为了安全起见,仅允许注册用户访问Jenkins,同时赋予不同用户不同的访问权限。在此我们使用了role strategy plugin这一插件进行用户权限管理(Jenkins的插件安装方法在后文中)。此插件可以定义不同的用户角色,并授予不同用户角色不同的查看管理项目权限,点击Configure Global Security选项进入全局安全设置页面,如图所示进行勾选设置。

Paste_Image.png

保存后返回上级页面,点击 Manage and Assign Roles进入角色管理于分配页面

Paste_Image.png

进入后会有三个选项,我们需要

  • 进行角色的创建(Manage Roles)
  • 将创建好的角色分配给不同用户(Assign Roles)。

对应选项如图

Paste_Image.png

点击Manage Roles 后进入如下页面,上方Global roles为全局角色设置栏,可以看到在此定义了admin与developer两类角色,admin角色拥有Jenkins的所有权限,而developer仅拥有部分可选择权限。使用者可以根据需要在下方点击add按钮继续添加不同角色,并为其赋予适当权限。全局角色的设定是为了使用户有访问Jenkins的权限。

下方的Project roles为项目角色设置栏,在此定义了5个项目角色,每一个项目角色都有一个与之相匹配的项目,匹配规则如Pattern栏中所示。以AJX角色为例,其Pattern为 AJX.* 也即匹配所有以AJX项目名开头的所有项目(注意此处的匹配与正则表达式有所不同,需要使用.*这一规则)。设定好匹配规则后,可以继续配置该角色对于匹配项目所拥有的权限。同样,可以通过下方的add按钮继续添加项目角色。项目角色的设定是为了方便管理用户所能看到及配置的项目。

Paste_Image.png

当角色创建管理完毕时,返回上一级页面,并点击进入Assign Roles设置页面,在此可以看到,为每一个用户首先分配了全局角色,而后又为其分配了项目角色,以songzheng741用户为例,其全局角色为developer,项目角色为AJX,则其可以访问Jenkins,但无法拥有管理员权限对系统进行设置更改,同时技能访问AJX所匹配的任务。

Paste_Image.png

使用songzheng741这一账号登录后查看效果,可以看到,该用户左侧无系统设置按钮,同时只能看到以AJX开头的项目。至此,用户角色分配策略已经生效。

Paste_Image.png

2. 创建一个Jenkins项目

在Jenkins主界面,点击新建按钮,开启新建项目视图,注意,如果此前设置了角色分配策略,则新建的项目名称需要与匹配的字段相同(同样以songzheng741为例,其新建任务只能以AJX开头,否则其创建成功后也无法对任务进行编辑与查看操作)。在此可以选择构建项目的类型,以及可以通过现有项目再创建一个配置完全一样的项目。

Paste_Image.png

输入项目名称并点击创建一个自由风格的软件项目,点击ok后进入项目配置页面,下面介绍部分常用功能的配置过程

  • 参数化构建

在每一次的任务中,允许用户指定不同的参数值作为执行过程中的变量。如下图所示,声明了AMAP_PLATFORM这一个变量,可选择0,1,2三个值,默认为0。在之后的脚本编写中,使用${AMAP_PLATFORM} 这样的方式进行调用。


Paste_Image.png

可以添加的参数类型如下图。

Paste_Image.png
  • 源码管理
    在任务中需要从git上下载最新的代码,除了在脚本中通过命令行语句执行外,还可以在项目中配置源码管理这一选项进行git仓库的代码拉取更新。如图,Jenkins支持git以及svn仓库,在本示例中选择了git作为源码管理仓库,在URL中填入git仓库对应的地址,并在Credentials中填入访问该git仓库的用户名密码,同时在Branch中填写具体的分支名称。每次Jenkins任务执行时,都会从此git地址拉取对应的分支代码,并将源码文件放置到项目的工作空间(workspace)中
Paste_Image.png
  • 触发构建

此选项配置项目何时会被触发执行,默认情况下需要用户手动点击项目进行执行,除此之外Jenkins还提供了更多的触发手段:远程触发构建,定时构建,当git仓库有变动(push,merge等操作)时执行构建等等,使用者可以选择不同的构建方式以满足需求,下图中选择的构建方式为轮询式,每隔15分钟检查下git仓库,如果有变动,则触发构建。

Paste_Image.png
  • 构建

正式的构建,可以通过NodeJS 脚本,或者shell命令行脚本,Gradle 脚本等等。本例使用了shell脚本,语句很简单,打印出之前定义的参数变量AMAP_PLATFORM。同时在执行脚本的过程中会用到系统的环境变量,Jenkins所提供的环境变量可以点击shell下方的按钮查看。

Paste_Image.png
  • 构建后操作

当执行完构建脚本后,需要进行诸如邮件通知构建结果,构建后的文件上传FTP等操作,Jenkins允许用户定义构建执行完成后所需执行的事件。如图,在此定义了邮件通知,以及上传FTP服务器的操作。点击“增加构建后操作”按钮可以查看更多可选操作。

注意:邮件通知构建结果,以及构建后上传FTP操作需要在Jenkins系统设置中分别配置邮件发送者以及FTP相关账号,后文会详述。

Paste_Image.png

至此,一个基本的Jenkins任务已经配置完毕,可以点击Build with Parameters执行查看任务执行效果,这里设置了参数化构建,将AMAP_PLATFORM设置为0

Paste_Image.png

执行后可以看到,任务首先拉取了git仓库代码,而后执行构建输出了参数AMAP_PLATFORM的值为0,最后上传了FTP站点。

Paste_Image.png

推荐阅读更多精彩内容