Jenkins持续集成(上篇)

news2024/9/22 19:20:39

(一)持续集成与 Jenkins 介绍

持续集成

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

1.什么是持续集成?

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

2.定义

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

Jenkins

Jenkins 官方网站:Jenkins

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

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

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

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

(二)Jenkins 环境搭建

Jenkins 是基于Java开发的一种持续集成工具,所以,Jenkins需要Java环境。关于Java环境的配置我们在第9章使用Selenium Grid 时已经作了介绍,这里不在讲解。

安装 Tomcat


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

Tomcat官方网站:Apache Tomcat® - Welcome! ,打开后首页如图2.1所示

 图2.1 下载Tomcat

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

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

安装 Jenkins


Jenkins官方网站:Jenkins ,打开后首页如图2.3所示。

 图2.3 下载Jenkins

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

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

 图2.4 双击Jenkins安装

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

 图2.5 选择Tomcat的webapps目录

配置 Jenkins


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

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

 图2.6 开如Jenkins

根据提示,打开: D:\Java\apache-tomcat-9.0.0.M26\webapps\Jenkins\secrets\initialAdminPassword 文件查看密码。将密码填写到输入框中,点击 “Continue” 按钮。

接下来根据提示进行安装。

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

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

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

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

(三)Jenkins 创建构建任务

构建项目类型


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

图3.1 选择Jenkins任务类型

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”按钮。

构建 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 配置构建执行状态

运行构建


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

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

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

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

配置构建执行状态

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

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

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

查看控制台输出:

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

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

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1353803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jdk和IDEA教育版下载和安装详解

前言 研究生专业是通信系统,为了寻找实习于是在研二时期学习java。但是在学习java的过程中没有进行系统总结,很多知识点或者一些细节已经忘记。由于工作找的是某行软件中心的软件开发。准备在毕业前对java知识进行系统性学习。本专栏将从零基础开始,从最简单的jdk和IDEA下载…

阿赵UE学习笔记——6、免费资源获取

阿赵UE学习笔记目录 大家好,我是阿赵。   接下来准备要往UE引擎里面放美术资源了。美术资源可以自己做,不过也有一些免费的资源可以供我们使用的,这里介绍一些获得免费美术资源的方法。 一、Quixel 1、Quixel网站下载 Quixel资源库&#…

高效管理版本控制,Cornerstone 4 for Mac助您成为SVN专家

在软件开发和团队合作中,版本控制是一个至关重要的环节。为了帮助开发者更加高效地管理和控制代码版本,Cornerstone 4 for Mac应运而生。作为一款功能强大的SVN(Subversion)管理工具,Cornerstone 4 for Mac为Mac用户提…

动手学深度学习一:环境安装与数据学习

2024,重新开始深度学习。 第一步:李沐动手学深度学习 课程网址:https://courses.d2l.ai/zh-v2/ 包含教材和视频网址链接 Jupyter notebook安装 目前在本地先使用cpu版本pytorch,我的本地已经安装好conda,跟着教材创建…

什么是自动化测试?为啥要学自动化测试?

什么是自动化测试,接着对常用的自动化测试框架进行了对比分析,最后,介绍了如果将自动化测试框架Cypress运用在项目中。 一、自动化测试概述 为了保障软件质量,并减少重复性的测试工作,自动化测试已经被广泛运用。在开…

【C++ Primer Plus学习记录】switch语句

假设要创建一个屏幕菜单,要求用户从5个选项中选择一个,例如,便宜、适中、昂贵、奢侈、过度。虽然可以扩展if else if else序列来处理这5种情况,但是C的switch语句能够更容易地从大型列表中进行选择。 下面是switch语句的通用格式…

清风数学建模-灰色预测

内容:灰色预测 概念:灰色预测是对原始数据进行生成处理来寻找系统变动的规律,并生成有较强规律的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势:如图随机性被削弱,变的有规律。 原理介绍…

[C#]C# OpenVINO部署yolov8实例分割模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 抛弃了前几代模型的 Anchor-Base。 YOLO 是一种基于图像全局信息进行预测的目标检测系统。自 2015 年 Joseph Redmon、Ali Farhadi 等人提出初代模型以来,领域内的研究者们…

后缀自动机超详细

后缀自动机 1.关于 e n d p o s endpos endpos 理解含义 假设字符串s是字符串S的一个子串,则 e n d p o s ( s ) endpos(s) endpos(s)表示s在S中的所有结束位置,如在字符串 a b c a b c a b abcabcab abcabcab中, e n d p o s ( a b ) 2 …

进程的基础认识

一、进程的概念 进程是指 可执行程序 内核数据结构(内核为了管理进程而创建的数据结构)。 二、进程的管理 进程是靠PCB(process control block [进程控制块])管理起来的,在linux下PCB叫 task_struct 当一个可执行程序从磁盘加载进内存&…

分割数组的最大差值 - 华为OD统一考试

分割数组的最大差值 - 华为OD统一考试 OD统一考试 分值: 100分 题解: Java / Python / C++ 题目描述 给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组),分别对子数组求和得到两个值.计算这两个值的差值…

lv14 字符设备驱动基础框架解析 4

一、字符设备驱动框架解析 设备的操作函数如果比喻是桩的话(性质类似于设备操作函数的函数,在一些场合被称为桩函数),则: 驱动实现设备操作函数 ----------- 做桩 insmod调用的init函数主要作用 --------- 钉桩 rm…

SQL窗口函数大小详解

窗口大小 OVER 子句中的 frame_clause 选项用于指定一个滑动的窗口。窗口总是位于分区范围之内,是分区的一个子集。指定了窗口之后,分析函数不再基于分区进行计算,而是基于窗口内的数据进行计算。 指定窗口大小的语法如下: ROWS…

怎么将视频转换为mp4?

怎么将视频转换为mp4?转换视频文件为 MP4 格式是非常普遍的需求,因为 MP4 是广泛支持的视频格式之一,能够在各种设备上流畅播放。MP4 格式具有很好的兼容性,基本上可以在所有的播放器中播放,也可以在大多数剪辑软件中打…

WEB 3D技术 three.js 补间动画(tween)

本文 我们来说 补间动画 比如说 我们有一个正方体 默认在如下图位置 然后 我们希望 一秒中之后 它到达如下图位置 那么 我们知道 终点和起点的位置 从起点到终点 一共需要一秒的时间 需要程序自己去处理这个图形 0.1 0.2 直到 1秒 它都分别要达到什么位置 通过开始和结束位…

尚硅谷大数据技术-数据湖Hudi视频教程-笔记01

大数据新风口:Hudi数据湖(尚硅谷&Apache Hudi联合出品)尚硅谷数据湖Hudi视频教程 B站直达:https://www.bilibili.com/video/BV1ue4y1i7na百度网盘:https://pan.baidu.com/s/1NkPku5Pp-l0gfgoo63hR-Q?pwdyyds阿里云…

爬虫如何使用代理IP通过HTML和CSS采集数据

目录 前言 1. 了解代理IP 2. 通过HTML和CSS采集数据 3. 使用代理IP进行数据采集 3.1 获取代理IP列表 3.2 配置代理IP 3.3 发送请求和解析网页内容 总结 前言 爬虫是一种自动化工具,用于从互联网上获取数据。代理IP是一种用于隐藏真实IP地址并改变网络请求的…

Python电能质量扰动信号分类(四)基于CNN-BiLSTM的一维信号分类模型

往期精彩内容: 引言 1 数据集制作与加载 1.1 导入数据 1.2 制作数据集 2 CNN-BiLSTM分类模型和超参数选取 2.1定义CNN-BiLSTM分类模型 2.2 设置参数,训练模型 3 模型评估 3.1 准确率、精确率、召回率、F1 Score 3.2 十分类混淆矩阵&#xff1a…

Stata各版本安装指南

Stata下载链接 https://pan.baidu.com/s/1ECc2mPsfNOUUwOQC9hCcYg?pwd0531 1.鼠标右击【Stata18(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Stata18(64bit)】。 2.打开解压后的文件夹,鼠标右击【Setup】选择【以管…

修复移动硬盘显示盘符但打不开问题

问题: 移动硬盘显示盘符,但无法打开。点击属性不显示磁盘使用信息。 分析解决: 这是由于硬盘存在损坏导致的,可以通过系统自带的磁盘检查修复解决,而无需额外工具。 假设损坏的盘符是E,在命令行运行以下命令…