软件测试教程 持续集成jenkins篇

软件测试教程 持续集成jenkins篇


本课程主要讲解持续集成工具jenkins的使用。

持续集成的核心价值在于:

1、持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、

费用和工作量;

2、持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间

发现软件的集成问题,使任意时间发布可部署的软件成为了可能;

3、持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集

成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

在敏捷时代,持续集成的作用越来越突出。本节主要讲解如下部分:

jenkins的特点

jenkins的安装与启动

jenkins的使用

jenkins与sonarqube的集成

jenkins的特点

Jenkins是一个软件界非常流行的开源CI服务器,jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:

  • 持续的软件版本发布/测试项目。
  • 监控外部调用执行的工作

Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

使用Jenkins的益处有:

-易安装、易配置

-基于Web访问,用户界面非常友好、直观和灵活

-Jenkins是基于Java开发的,但它不仅限于构建基于Java的软件

-变更支持:Jenkins能从代码仓库(Subversion/GIT)中获取并产生代码更新列表并输出到编译输出信息中

-测试报告:也就是用以图表等形式提供详细的测试报表功能

-拥有大量的插件:这些插件极大的扩展了Jenkins的功能

典型的工作流:

  1. pull

  2. 编译

  3. 测试

  4. 发布

Jenkins会定时获取最新的代码,自动运行你的编译脚本,编译成功后,再运行你的测试脚本,这一步成功后,接着它会帮你把新程序发布出去,特别的,在最后一步,你可以选择手动发布,或自动发布,毕竟发布这件事情,还是需要人为的确认一下比较好。简而言之

Jenkins可以帮你在写完代码后,一键完成开发过程中的一系列工作

使用Jenkins的好处显而易见,它减少了你的重复劳动。更重要的是,一个团队的开发流程一开始是不一致的,不一致往往会带来各种各样的问题,最终体现在软件的质量或开发效率不够高,而Jenkins会帮你规范大家的行为,从而避免一系列的问题。

jenkins-1.png

jenkins的安装和启动

jenkins官网地址:https://jenkins.io/

建议下载war包程序

注意:不要在中文目录下运行

jenkins为java编写,需要JDK的支持

环境变量的设置:

JAVA_HOME,设置JDK的安装目录,建议采用JDK1.7+

JENKINS_HOME,设置Jenkins的配置文件目录,默认为用户的目录,建议为Jenkins的安装目录,便于控制;该项目如果不配置,那么将默认在用户目录下生成.jenkins文件夹

PATH,需要将java的bin目录配置到path目录下;

1、启动,可以编写如下bat进行启动或者直接输入命令行。也可以将war包直接放在web容器内,如tomcat。

@echo off
set JENKINS_HOME=%CD%\.jenkins
java.exe -jar   -Xmn128M -Xms256M -Xmx512M jenkins.war --httpPort=8080

jenkins2.0+以上版本,在控制台会输出如下信息,这里的信息为首次登陆的密码

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

0a2927dc3a304b6aad04690291c90fb3

2、打开网页http://localhost:8080,提示输入密码,输入以上密码,继续,选择建议的插件安装

3、建立admin用户,输入用户名、密码例如admin/admin

jenkins的使用

系统配置

1)基本设置

工作空间根目录:job文件存放的目录

构建记录根目录:每一次构建日志目录

执行者数量:同时执行的任务数

Subversion:配置svn版本

Extended E-mail Notification&&邮件通知:配置邮件通知服务器

2)全局工具配置

配置jdk,ant,maven,git等版本,此处可以配置多个,以支持不同项目使用

3)管理插件

安装、卸载、升级插件

4)全局安全配置

配置授权策略

建议采用Jenkins专用数据库,安全策略采用安全矩阵方式,已经能够基本满足现有的模式。

安全域:

1、Jenkins专有用户数据库

2、LDAP

授权策略

1、安全矩阵

| Overall | Credentials | Agent | Job | Run | View | SCM |

Agents:

当需要设置slave时,TCP port for JNLP agents需要启用,否则不同通过java web启动代理

5)管理用户

增加jenkins新用户

6)系统信息

查看系统环境信息

7)管理节点

Jenkins的分布式构建,在Jenkins的配置中叫做节点。

当我们使用多台服务器时,可通过jenkins的节点配置,将jenkins项目发布在不同服务器上进行编译、部署,这就形成了jenkins的分布式

简单解释一下配置:

名字:该节点的名字。

描述:说明这个节点的用途。

# of executors:允许在这个节点上并发执行任务的数量,一般设置为 cpu 支持的线程数。

远程工作目录:节点上 Jenkins 的根目录。

标签:分配给这个节点的标签。

用法:节点的使用策略。

启动方法:启动 agent 的方式,对于 windows 平台,最好选择 "通过Java Web启动代理"。

​ 对于linux平台,选择Launch slave agents via SSH

Availability:Jenkins 控制 slave 是否在线的策略。

Node Properties:设置工具列表和环境变量

8)读取设置

放弃当前内存中所有的设置信息并从配置文件中重新读取 仅用于当您手动修改配置文件时重新读取设置。

视图

用于分类管理,使job分类清晰

新建视图

1、在Jenkins主界面中点击图示的【+】开始执行视图创建工作

2、在【新建视图】页面,按照图示填写“视图名称”,选择“List View”点击【OK】按钮

3、在【视图配置】页面中,我们可以给当前的视图添加描述性信息,添加完成之后,点击【保存】按钮

修改视图

1、点击【编辑视图】按钮,进入【编辑视图】页面

2、在【编辑视图】页面,将我们所修改的编写完之后,点击【保存】按钮,即可实现编辑视图的操作

删除视图

1、点击【删除视图】按钮,即可实现视图的删除操作,删除视图不会影响job

job

一个JOB就是一个任务。

在jenkins主页面,选择新建,可以新建不同种类的job

image.png

构建一个自由风格的软件项目:jenkins最常用的类型,一般没有特殊需求可以选择它

构建一个maven项目:当安装了maven插件之后,会出现该项目,仅针对maven构建方式的项目

流水线:jenkins2.0+之后推广的方式,通过编写yml文件的方式来实现自动构建、部署等操作

构建一个多配置项目:当需要多环境时,必须多环境编译、部署时可以采用该配置

新建一个自由风格的项目后job的页面如下:

image.png

JOB主要包含以下部分:

1)项目名称和描述

2)项目安全

3)参数化构建过程:是否升级db、选择部署环境等

4)源码管理:从SVN、GIT等获取代码

5)构建触发器:是否与其他JOB有依赖关系,是否使用定时器等

6)构建:调用ant、maven、shell等脚本

7)日志查看,点击console output可以查看日志信息

执行过程如图:

st=>start: start
op=>operation: 获取参数
op1=>operation: 构建触发器
op2=>operation: 构建环境
op3=>operation: 构建
op4=>operation: 构建后操作
e=>end

st(right)->op(right)->op1(right)->op2(right)->op3(right)->op4(right)->e

常见配置项解释:

项目名称与描述:名称不建议为中文,项目(任务)名称不能重复

丢弃旧的构建:设置构建历史的保存策略,可以节省空间,可以按天数或者个数来设置

参数化构建过程:某些构建过程,需要一些输入参数,常用的有choice parameter,string parameter等

Restrict where this project can be run:当jenkins配置有slave时,可以设置job在该slave上运行

github project :github使用,里面配置响应的url和需要显示的名称就可以了

throttle builds:节流构建,通过设置时间段内允许并发的次数来实现构建的控制

参数化构建过程:里面可以配置不同的参数,便于在构建时引用这些参数

​ windows引用方式%paraname%,shell为$paraname

关闭构建:项目无法进行构建

安静期:设置一个时间来间隔每次构建的间隔

重试次数:拉取源码重试的次数

该项目的上游项目正在构建时阻止该项目构建与该项目的下游项目正在构建时阻止该项目构建:用于上下游项目有关联的构建策略

使用自定义的工作空间:指定当前任务的workspace,否则默认为JENKINS_HOME的工作目录

保留构建的依赖日志

源码管理:选择使用git或者svn,以git为例:

​ 以svn为例时

repository url:填写仓库的地址

Credentials:这里需要配置拉取svn源码的用户名和密码

Local module directory:具体的项目的路径,默认从根目录拉取

Additional Credentials:增加额外认证

Check-out Strategy:代码检出策略

            Use 'svn update'  as much as possible:相当于svn update

            Always check out a fresh copy:checkout之前先清除工作区文件

源码库浏览器:这里默认就可以了

构建触发器:

1、触发远程构建 (例如,使用脚本):这里使用于自动化构建,拼接url后写入代码中可以实现在脚本或者工具执行构建

2、Build after other projects are built:构建与其他项目构建后,用于上下游项目有关联的时候

3、Build periodically:定时执行构建

日程表的参数:

第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。

4、Build when a change is pushed to GitHub:这个是github项目的触发规则

5、Poll SCM:设置定时检查代码仓库是否有变更,有变更则构建

构建环境:

1、Delete workspace before build starts:在构建之前清空工作空间

2、Abort the build if it's stuck:如果构建出现问题则终止构建

3、Add timestamps to the Console Output:给控制台输出增加时间戳

4、Use secret text(s) or file(s):使用加密文件或者文本

构建

1、execute windows batch command:执行windows的cmd

2、execute shell:执行shell命令

3、invoke ant:调用ant ,调用ant的执行脚本来进行构建

备注:

  • Targets:主要是执行ant脚本中哪几个部分,可以添加多个;

  • Build File:需要指定Ant脚本的物理位置;

  • Properties:添加Ant指定的属性;

  • Java Options:设置运行java时的属性,例如内存、堆大小等;

4、invoke gradle script :调用grade脚本,来帮助我们自动打包

5、invoke top-level maven targets:调用maven

不同的语言可能会采用不同的构建方式

构建后操作

1、build other projects:构建其他项目

2、e-mail notification:发送邮件

3、delete workspace when build is done:构建后删除工作空间

案例:

以一个web工程为样例

1、安装Deploy to container Plugin插件

2、新建-构建一个自由风格的软件项目

3、源码管理选择scm,没有的话就不选择

4、构建触发器,选择poll scm,设置触发时间,例如H 5 * * *,表示每晚5点开始运行Job

poll scm的触发条件是:晚上5点,查看scm是否有更新,有更新则开始构建

5、构建:选择构建方式

本web项目选择构建方式maven

6、构建后操作:选择发布到tomcat

7、进行构建

8、查看构建日志

运行并监控构建作业

当配置完成一个任务后,回到主控制面板:

1、列表列举现在已经配置的任务已经任务当前的状态

2、左边有构建队列,当有构建时,会把当前正在构建的队列在上面进行列举

3、当一个任务配置完成后,可以采用手动构建和触发器构建两种方式,在项目验证阶段,可以通过手动触

发方式,点击任务区的“立即构建”,会在Build History中出现进度条

4、点击进度条,可以进入到具体的编译过程

任务构建状态

当前构建状态分为以下几种:

image.png

构建稳定行,Jenkins会基于一些后处理器任务为构建发布一个稳健指数(从0-100 ),越高越稳定

image.png

image.png

jenkins与sonarqube的集成

1、安装SonarQube Scanner for Jenkins插件

2、进入系统设置-全局工具设置,配置SonarQube Scanner路径

image.png

3、进入系统设置-系统管理,配置SonarQube servers,增加一个server,配置NAME,以及Server URL

image.png

4、在job的配置页面增加构建步骤:Execute SonarQube scanner

Analysis properties(举例):

sonar.projectKey=Test

sonar.projectName=Test

sonar.projectVersion=1.0

sonar.sources=.

sonar.sourceEncoding=UTF-8

sonar.language=java
image.png

5、job完成后,可以在项目页面,点击sonarqube链接查看扫描结果

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

推荐阅读更多精彩内容

  • “哈?一封情书?”渐渐的声音小了下来,王丽娜悄悄的走了过来,“哟,这不是情书嘛,是那个帅哥喜...
    忧郁的小帅哥阅读 205评论 0 0
  • 1.里面主要两个控件: YYTextView 和 YYLabel 现在主要是YYTextview的简单使用 YYT...
    smile小芳阅读 8,084评论 4 4
  • 老板,给我来二两iphone7! 随着苹果7首发的日子逐渐逼近,台下观望的各路好汉几乎已经全部躁动起来了:有钱的早...
    SimplyWine阅读 257评论 0 0
  • 偶遇厉老师病愈进教室一幕,泪眼朦胧!
    从源王有鹏阅读 276评论 0 3
  • 话说在早先,庄户人耕地,用木头犁子。不过犁尖头是生铁铸造的。章老汉置办了一架犁子,这天章老汉赶红河买了个犁尖。由于...
    南良大维阅读 469评论 2 4