Jenkins学习(完成版)

参考网站:http://www.testclass.net/jenkins/

一共分为八个部分:持续集成与Jenkins介绍、Jenkins 环境搭建、Jenkins 创建构建任务、Jenkins 配置构建执行状态、Jenkins设置定时任务、实战:构建GitHub项目(上)、实战:构建GitHub项目(中)、实战:构建GitHub项目(下);

(一)持续集成与 Jenkins 介绍

持续集成:持续集成(Continuous integration,简称 CI),随着近几年的发展,持续集成在项目中得到了广泛的推广和应用。本章将带领读者一起了解持续集成工具 Jenkins 的安装与使用。

1.什么是持续集成

软件集成就是用一种较好的方式,使多种软件的功能集成到一个软件里,或是把软件的各部分组合在一起。如果项目开发的规模较小,且对外部系统的依赖很小,那么软件集成不是问题,例如一个人的项目。但是随着软件项目复杂度的增加,会对集成和确保软件组件能够在一起工作提出了更多的要求–>要早集成、常集成。早集成、频繁的集成能够帮助项目开发者在早期发现项目风险和质量问题,越到后期发现的问题,解决的成本越高,从而有可能导致项目延期或者项目失败。

2.定义

大师 Martin Fowler 对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快地开发内聚的软件。

Jenkins

Jenkins 官方网站:https://jenkins.io/

提到 Jenkins 就不得不提另一个持续集成工具——Hudson , Hudson 由 Sun 公司开发,2010 年 Sun 公司被 Oracle 公司收购, oracle 公司声称对 hudson 拥有商标所有权。 Jenkins是从 Hudson 中分离出来的一个版本,并将继续走 Open Source 的道路。二者现在由不同的团队在维护。

enkins 主要用于监视执行重复工作,如建立一个软件项目或工作运行的计划任务。当前 Jenkins 关注以下两个工作。

不断地进行项目的构建/测试软件: 就像 CruiseControl 或 DamageControl。概括地说,Jenkins 提供了一个易于使用的所谓的持续集成系统,使开发人员更容易修改整合到项目中,并使它更容易为用户获得一个新的版本。自动连续生成提高了生产效率。

监控外部运行的作业: 如计划任务作业和 Qrocmail 的工作,即使是那些在远程机器上运行的计划任务。 Jenkins 生成这些日志并且很容易让你注意到错误的出现。

(二)Jenkins 环境搭建

Jenkins 是基于Java开发的一种持续集成工具,所以,Jenkins需要Java环境。

1.安装Tomcat

Tomcat是针对Java的一个开源中间件服务器(容器),基于Java Web的项目需要借助Tomcat 才能运行起来。

Tomcat官方网站:http://tomcat.apache.org/ ,打开后首页如图2.1所示

Jenkins学习(完成版)_第1张图片

图2.1 下载Tomcat

单击页面左侧Tomcat 版本进行下载,对下载的压缩包进行解压,目录结构如图2.2所示。

Jenkins学习(完成版)_第2张图片

图2.2 webapps目录用于web项目 通常将需要运行的应用放到webapps/目录下,进入bin/目录下,双击startup.bat,启动Tomcat服务器。

 

2.安装Jenkins

Jenkins官方网站:https://jenkins.io/ ,打开后首页如图2.3所示

Jenkins学习(完成版)_第3张图片

图2.3 下载Jenkins

点击“Download” 链接进入下载页面,根据自己的系统选择对应的 Jenkins 版本进行下载。

下载完成,双击进行安装,如图2.4所示。

Jenkins学习(完成版)_第4张图片

图2.4 双击Jenkins安装

单击“next”按钮,我们直接将其安装到Tomcat的 webapps 目录下,如图2.5所示。一定要选择TomCat 的 webapps 目录。

Jenkins学习(完成版)_第5张图片

 

图2.5 选择Tomcat的webapps目录

3.配置Jenkins

Jenkins 安装完成会自动启动 TomCat , 并通过默认浏览器打开:http://localhost:8080/。

(你也可以手动进Tomcat的bin/目录下启动startup.bat ,通过浏览器访问:http://localhost:8080/) 如图2.6所示。

Jenkins学习(完成版)_第6张图片

图2.6 首页Jenkins

根据提示,打开: E:\software\Tomcat\apache-tomcat-7.0.93\webapps\Jenkins\secrets\initialAdminPassword 文件查看密码。将密码填写到输入框中,点击 “继续” 按钮。

接下来根据提示进行安装,点击“安装推荐的插件”。

Jenkins学习(完成版)_第7张图片

Jenkins学习(完成版)_第8张图片

上图,运行需要一些时间,Jenkins 正在帮我们安装各种主流插件。

号。最后一步配置,创建 管理员账号。

Jenkins学习(完成版)_第9张图片

Jenkins学习(完成版)_第10张图片

整个 Jenkins 安装配置完成。操作界面如下。

Jenkins学习(完成版)_第11张图片

Jenkins 的安装比以前复杂了些,但功能也变得更为强大了。

 

(三)Jenkins 创建构建任务

1.构建项目类型

点击 Jenkins 首页 “创建一个新任务” 的链接,弹出如图3.1所示页面。

图3.1 选择Jenkins任务类型

1.1 Jenkins 提供了六种类型的任务

  • 构建一个自由风格的软件项目

这是Jenkins的主要功能。Jenkins 会结合任何 SCM 和任何构建系统来构建你的项目, 甚至可以构建软件以外的系统。

  • Pipeline

Orchestrates long-running activities that can span multiple build slaves. Suitable for building pipelines (formerly known as workflows) and/or organizing complex activities that do not easily fit in free-style job type. – 很难用一两句话说清 Pipeline, 参考 , 后面另起一文来介绍。

  • 构建一个多配置项目

适用于多配置项目,例如多环境测试、平台指定构建,等等。

  • GitHub Organization

Scans a GitHub organization (or user account) for all repositories matching some defined markers. –这个主要针对由 Github 托管的项目。

  • Multibranch Pipeline

Creates a set of Pipeline projects according to detected branches in one SCM repository. 根据一个SCM存储库中检测到的分支创建一组 Pipeline 项目。

  • 文件夹

创建一个可以嵌套存储的容器。利用它可以进行分组。 视图仅仅是一个过滤器,而文件夹则是一个独立的命名空间, 因此你可以有多个相同名称的的内容,只要它们在不同的文件夹里即可。

这里选择第一个:构建一个自由风格的软件项目, 输入项目名称:python test project ,点击 “OK”按钮。

2.构建Windows测试任务

假设,我们有一个 Python 编写的测试脚本 py_tests.py ,位于电脑 D盘 根目录,内容如下:

import unittest, time
from selenium import webdriver


class TestClass(unittest.TestCase):

	def setUp(self):
		self.driver = webdriver.Chrome()
		self.base_url = "http://www.testclass.net"

	def tearDown(self):
		time.sleep(2)
		self.driver.quit()

	def test_case(self):
		self.driver.get(self.base_url)
		search_input = self.driver.find_element_by_name("q")
		search_input.send_keys("selenium")
		search_input.submit()

	def test_case2(self):
		self.driver.get(self.base_url)
		search_input = self.driver.find_element_by_name("q")
		search_input.send_keys("jenkins")
		search_input.submit()


if __name__ == '__main__':
	unittest.main()

如果是在 Windows 下应该如何执行这个测试用例呢? 打开 Windows 命令提示符(CMD)。

Microsoft Windows [版本 10.0.15063]
(c) 2017 Microsoft Corporation。保留所有权利。

C:\Users\name> python d:/py_tests.py
..
----------------------------------------------------------------------
Ran 2 tests in 22.371s

OK

D:\>

不明白什么意思? 那么你记清我上面运行 python 程序时所敲的一行 dos 命令。

下接来回到 Jenkins 的配置过程中,


添加项目的描述:selenium 自动化测试项目。

剩下的选项都不要管,拖到页面底部,构建 选项。

选择 “Execute Windows batch command” 选项,执行Windows批处理命令。

如上图,输入你在 windows 命令提示符下所输的命令(python d:/py_tests.py)。 点击 “保存”。

一个极简的,基于 Windows 系统的,Python 脚本测试的 持续集成项目就创建完成了。

(四)Jenkins 配置构建执行状态

1.运行构建

在项目 左侧列表点击 “立即构建” ,在 “Build History” 列表,你会得到一个红色的小圆点,表示构建失败。

点击 构建失败的任务(红色的小圆点)。然后点击“Console Output” 就可以查看失败的 log 了。

提示:'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。

我们明明在 Windows 提示符下运行是没有问题的。这是因为 Jenkins 缺少环境配置。

2.配置构建执行状态

回到 Jenkins 首页,点击 “构建执行状态” ,右则会列出本机信息,点击本机信息,配置 Python 的 path 环境变量。同时还需要添加浏览器驱动文件所在目录,参考 。

如果你明白这块的话,说明你不懂 Python 语言,或不熟悉 Python 运行环境的配置。(不同技术的之间的配合使用存在一定的依赖关系!我们无法做到零基础。)

配置完成,点击 “保存” , 再来运行 “立即构建” ,这次看到 py_tests.py 自动化脚本被执行了。

查看控制台输出:

好了!一个简单的 selenium + python 自动化测试的构建任务就创建完成了。

但对于 Jenkins 的学习,我们才刚刚开始。

(五)Jenkins 设置定时任务

每次都手动的构建项目显然不够方便,有时候需要定时地执行自动化测试脚本。例如,每天晚上定时执行 py_tests.py 文件来运行自动化测试项目。

1.设置定时任务

前面已经创建的 “python test project” 项目为例,单击项目左侧的 “配置” 选项,修改项目的配置。
找到 构建触发器 ,勾选 Build periodically 选项。

通过查看设置说明,此处定时任务的格式遵循 cron 的语法(可以与 cron 的语法有轻微的差异)。具体格式,每行包含五个字段,通过 Tab 或空格分隔。

字段 说明
MINUTE Minutes within the hour (0–59)
HOUR The hour of the day (0–23)
DOM The day of the month (1–31)
MONTH The month (1–12)
DOW The day of the week (0–7) where 0 and 7 are Sunday.

若要指定一个字段的多个值,可以使用以下运算符,按先后顺序。

  • 指定所有制
  • M-N 指定范围值
  • M-N/X 或 */X 在指定范围或整个有效范围内按X间隔的步骤
  • A,B,...,Z 列举了多个值

例子:

  • 每15分钟运行一次 (可能在 1:07分, 1:22分, 1:37分, 1:52分)
H/15 * * * *
  • every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
H(0-29)/10 * * * *
  • 每周一至周五,上午9:45到下午3:45,每隔2小时45分钟运行一次
45 9-16/2 * * 1-5
  • 每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)
H H(9-16)/2 * * 1-5
  • 除12月外,每月1号和15号每天一次
 H H 1,15 1-11 *

(六)实战:构建 GitHub 项目(上)

Jenkins 不是一个对开发零基础的人去用的工具。不管你要构建什么样的项目,首先要有这么个项目存在,而且还要知道如何运行该项目。

1.快速创建GitHub项目

如果你想快速的使用 GitHub 来维护你的自动化测试项目,请阅读该教程。

(一)认识Git与GitHub
(二)GitHub注册与Git安装
(三)Git提交代码到GitHub
(四)Git克隆与更新代码

2.Jenkins配置Git

首先,登录 Jenkins ,在首页找到 “系统管理 -> Global Tool Configuration -> Git

Path to Git executable :设置 Git 执行文件的位置。从你Git的安装目录中查看 “git.exe” 可执行文件的位置。

设置完成后点击 “Save” 保存设置。

(七)实战:构建 GitHub 项目(中)

前提工作已经完成,接下来创建 GitHub 的项目构建。

1.创建GitHub项目的构建

1.1新建项目

在 Jenkins 首页,点击 “新建”。

设置项目名称:GitHub project

选择“构建一个自由风格的软件项目

1.2添加GitHub上的项目

勾选 * GitHub Project 选项

Project url :设置 github 的项目地址。

1.3设置Git

  • 勾选 * Git 选项

  • Repository URL: 填写 GitHub 项目地址
  • credentials : 设置资格证书,听过 add 添加账号。
  • Branch Specifier(blank for ‘any’) : 默认 */master 不用修改。

 

1.4设置触发条件

  • Github hook trigger for GITScm polling (触发 GitHub 项目轮询) ,勾选
  • Poll SCM (设置每两分钟检测一次项目更新)参考((五)Jenkins 设置定时任务),勾选

1.5添加构建命令

添加运行项目测试用例的命令。参考((三)Jenkins 创建构建任务)
项目创建完成,点击“保存”。

(八)实战:构建 GitHub 项目(下)

其实,到些为止,整个项目已经创建完成。这一小节,只是为了验证创建的项目是否有效。

1.提交项目版本

修改 pyse 开源项目,并提交代码到 GitHub .

D:\git\pyse (master)
λ git commit -m "verison 0.0.8"

[master 270de98] verison 0.0.8
 6 files changed, 36 insertions(+), 32 deletions(-)
 create mode 100644 test_report.png

 D:\git\pyse (master)
 λ git push origin master

 Counting objects: 12, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (11/11), done.
 Writing objects: 100% (12/12), 33.80 KiB | 11.27 MiB/s, done.
 Total 12 (delta 5), reused 0 (delta 0)
 remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
 To https://github.com/defnngj/pyse
    c5b4c8a..270de98  master -> master

2.查看构建日志

通过 Jenkins 查看项目构建历史。

查看构建的详细日志。

关于 GitHub 的项目实战到此完成。

你可能感兴趣的:(Jenkins学习(完成版))