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

集成开发组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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,082评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,231评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,047评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,977评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,893评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,976评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,605评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,888评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,906评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,732评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,513评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,980评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,132评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,447评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,027评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,232评论 2 339

推荐阅读更多精彩内容