软件测试/测试开发丨Jenkins Pipeline 学习笔记

这篇具有很好参考价值的文章主要介绍了软件测试/测试开发丨Jenkins Pipeline 学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接:https://ceshiren.com/t/topic/26711

1. Jenkins节点

1.1 常用的节点

  • 内建节点
  • SSH节点
  • Java Web节点

1.1.1 SSH节点配置

  • 远程工作目录

    • 节点中必须有该目录,用于下载和运行jenkins
  • 主机

    • 节点的ip

1.1.2 Java Web节点配置

  • 全局安全配置

    • 代理:勾选Java代理协议

1.2 节点管理的缺陷

  • 没有负载监控能力(任务数量做的负载均衡)
  • 高可用能力差
  • 资源利用率

使用k8s和jenkins集成来解决

1.3 环境变量/工具位置的配置

  • 全局环境变量
  • 节点环境变量:点击配置从节点,进行配置

1.4 父子job配置

  • 在子job的设置中,构建触发器配置父job

2. pipeline

2.1 语法 Declarative pipeline

语法树

  • 必须包含在一个pipeline块内 pipeline{}
pipeline {
    agent any  // 定义构建代理

    environment {
        param = 'xx'
    }

    stages {  // 定义阶段
        stage('pull source code') {
            steps {
                echo 'pull source code'
                sleep 5
            }
        }

        stage('build'){
            steps {
                echo 'build source code'
                sleep 5
            }
        }
    }

    post{  // 定义全局后置处理程序
        always {
            echo 'say goodbye'
        }
    }
}

agent:定义pipeline执行节点

  • 必须出现的指令

  • 参数

    • any:可以在任意agent上执行pipeline

    • none:pipeline将不分配全局agent, 每个stage分配自己的agent

    • label:指定运行节点的Label

    • node:自定义运行节点配置

      • 指定 label
      • 指定 customWorkspace
    • docker:控制目标节点上的docker运行相关内容

    pipeline {
    	agent {
    		label 'master'
    		customWorkspace 'myWorkspace'
    	}
    }
    

stages:定义阶段集

  • 必须出现的指令
  • 包含一个或多个stage的序列
  • 每个Pipeline 代码区间中必须只有一个stages

stage:定义阶段

  • 必须出现的指令
  • 无参数
  • 包含在stages中
  • Pipeline完成的所有实际工作都需要包含到stage中
  • 需要定义stage的名字

steps:定义步骤

  • 必须出现的指令
  • 无参数
  • 具体执行步骤,包含在 stage 代码区间中

post:定义Pipeline或stage运行结束时的操作

  • 不是必须出现的指令

  • 参数:

    • always:无论Pipeline运行的完成状态如何都会运行
    • changed:只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时,才能运行
    • failure:仅当当前Pipeline处于“失败”状态时才运行
    • success :仅当当前Pipeline具有“成功”状态时才运行
    • unstable:只有当前Pipeline具有“不稳定”状态才能运行
    • aborted:只有当前Pipeline处于“中止”状态时才能运行
    post {
    	always {
    		echo 'say always'
    	}
    
    	success {
    		echo 'say success'
    	}
    
    	failure {
    		echo 'say failure'
    	}
    }
    

options:定义pipeline 的专有属性

  • 不是必须出现的指令

  • 参数:

    • buildDiscarder:保持构建的最大个数
    • disableConcurrentBuilds:不允许并行执行pipeline任务
    • timeout:pipeline 超时时间
    • retry:失败后,重试整个Pipeline的次数
    • timestamps:预定义由Pipeline生成的所有控制台输出时间
    • skipStagesAfterUnstable:一旦构建状态进入了“Unstable”状态,就跳过此stage
options {
    timeout(time: 30, unit: 'SECONDS')
    buildDiscarder(logRotator(numToKeepStr: '10'))
    retry(5)
}

environment:定义Pipeline或stage运行时的环境变量

  • 不是必须出现的指令
  • 无参数
	environment {
		PERSON = "Kevin"
	}

	stages {
		stage('pull source code') {
			steps {
				echo "hello ${PERSON}"
				echo PERSON
			}
	}

parameters:定义pipeline 的专有参数列表

  • 不是必须出现的指令

  • 使用 ${变量名} 进行参数化调用

  • 参数:

    • 支持数据类型:booleanParam, choice, credentials, file, text, password, run, string
    • 类似参数化构建的选项,结合environment,可避免首次构建失败
	parameters {
		string(name: 'PERSON' ,defaultValue:'Jenkins',description:'输入的文本参数')
	}

	environment {
		PERSON = "$params.PERSON"
	}

	stages {
		stage('pull source code') {
			steps {
				echo "hello ${PERSON}"
				echo 'pull source code'
			}
	}

triggers:定义了Pipeline自动化触发的方式

  • 不是必须出现的指令

  • 参数:

    • cron:接受一个cron风格的字符串来定义Pipeline触发的常规间隔
    • pollSCM:接受一个cron风格的字符串来定义 Jenkins 检查SCM源更改的常规间隔;如果存在新的更改,则Pipeline将被重新触发
triggers {
    cron('H/2 * * * *')
}

script:定义脚本

  • 在script块内,可执行groovy脚本

2.2 语法 Scripts pipeline

流程控制 if-else

node {
    stage('Example') {
        if (env.BRANCH_NAME == 'master') {
            echo 'I only execute on the master branch'
        } else {
            echo 'I execute elsewhere'
        }
    }
}

流程控制 try-catch

stage('Test') {
    node{
        echo "This is test stage which run on the slave agent."
        try {
            echo "This is in the try block."           
            sh 'exit 1'
        }catch (exc) {
            echo "Something failed, I'm in the catch block."
        }finally {
            echo "Finally, I'm in the finally block."
        }
    }
}

环境变量定义及引用

  • 环境工具变量的定义

    • 设置位置: “Manage Jenkins”-> “Global Tool Configuration”
  • Script 代码中引用环境变量,调用java、maven工具文章来源地址https://www.toymoban.com/news/detail-701159.html

stage('env tools') {
    node('master'){        
        //定义maven java环境
        def mvnHome = tool 'Maven 3.9.3'
        def jdkHome = tool 'jdk1.8_master'
        
        //引用环境变量,配置PATH变量
        env.PATH = "${mvnHome}/bin:${env.PATH}"
        env.PATH = "${jdkHome}/bin:${env.PATH}"
        
        //调用java mvn 工具
        sh "java -version"
        sh "mvn --version"
    }
}

到了这里,关于软件测试/测试开发丨Jenkins Pipeline 学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【软件测试】学习笔记-精准测试

    【软件测试】学习笔记-精准测试

    软件测试行业从最开始的手工测试到自动化测试,从黑盒测试到白盒测试,测试理念和技术都发生了日新月异的变化。现如今,几乎所有的软件公司都有一套强大且复杂的自动化测试用例,用来夜以继日地保证产品的正确性和稳定性。 然而,你有没有想过,现在你所掌握的软

    2024年01月18日
    浏览(11)
  • 【软件测试学习笔记1】测试基础

    【软件测试学习笔记1】测试基础

    软件的定义: 控制计算机硬件工作的工具 软件的基本组成: 页面客户端,代码服务器,数据服务器 软件产生的过程: 需求产生(产品经理),需求文档,设计效果图(UI设计师),产品开发(研发人员),产品测试(测试人员),部署上线。 什么是软件测试: 使用技术手

    2024年01月18日
    浏览(31)
  • 【软件测试】学习笔记-统一测试数据平台

    【软件测试】学习笔记-统一测试数据平台

    这篇文章主要探讨全球大型电商企业中关于准备测试数据的最佳实践,从全球大型电商企业早期的测试数据准备实践谈起,分析这些测试数据准备方法在落地时遇到的问题,以及如何在实践中解决这些问题。其实,这种分析问题、解决问题的思路,也是推动着测试数据准备时

    2024年01月17日
    浏览(15)
  • 【软件测试】学习笔记-如何做好单元测试

    【软件测试】学习笔记-如何做好单元测试

    在正式开始今天的话题之前,我先给你分享一个工厂生产电视机的例子。 工厂首先会将各种电子元器件按照图纸组装在一起构成各个功能电路板,比如供电板、音视频解码板、射频接收板等,然后再将这些电路板组装起来构成一个完整的电视机。 如果一切顺利,接通电源后

    2024年02月03日
    浏览(11)
  • 【软件测试】学习笔记-设计一个“好的”测试用例

    【软件测试】学习笔记-设计一个“好的”测试用例

    本篇文章重点探讨如何才能设计出一个“好的”测试用例。 什么才是“好的”测试用例,这个“好”又应该体现在哪些方面。这是一个看似简单实则难以回答的问题,即使深入思考后,也很难有非常标准的答案。 通常,你的第一反应很可能会是“发现了软件缺陷的测试用例

    2024年01月20日
    浏览(14)
  • 【软件测试学习笔记3】缺陷管理

    执行结果和预期结果不一样,就叫缺陷,俗称bug 少功能:软件未实现需求(规格)说明书中明确要求的功能 功能错误:软件出现了需求(规格)说明书中指明不应该出现的错误 多功能:软件实现的功能超出需求(规格)说明书指明的范围 隐性功能错误:软件实现需求(规格

    2024年01月18日
    浏览(28)
  • 【软件测试】学习笔记-微服务模式下API测试

    【软件测试】学习笔记-微服务模式下API测试

    这篇文章探讨当下最热门的技术领域的API测试,即微服务模式下的API测试。微服务架构下,API测试的最大挑战来自于庞大的测试用例数量,以及微服务之间的相互耦合。这篇文章探讨这两个问题的本质,以及如何基于消费者契约的方法来应对这两个难题。 而为了掌握微服务模

    2024年02月22日
    浏览(11)
  • 【软件测试学习笔记6】Linux常用命令

    【软件测试学习笔记6】Linux常用命令

    command  [-options] [parameter] command 表示的是命令的名称 []表示是可选的,可有可无 [-options]:表示的是命令的选项,可有一个或多个,也可以没有 [parameter]:表示命令的参数,可以有一个或多个,也可以没有 绝对路径:唯一 /开头    cd/etc/abrt ~/开头  cd/usr/bin ~就是/home/用户  

    2024年01月21日
    浏览(36)
  • 【软件测试学习笔记2】用例设计方法

    说明:在所有测试数据中,具有某种共同特征的数据集合进行划分 分类:有效等价类:满足需求的数据集合            无效等价类:不满足需求的数据集合 步骤:明确需求            划分有效和无效的数据集合            提取数据设计  用例 解决穷举问题 选取正好等

    2024年01月16日
    浏览(16)
  • 从零开始学习软件测试-第47天笔记

    yaml yaml是一种所有编程语言都可用的友好的数据参数化标准。 yaml里只能使用字典或列表这两种数据类型。 使用缩进表示层级关系,但只允许使用空格缩进。 缩进时空格的数量不重要,只要在同一层级数据左侧对齐即可。 大小写敏感。 下载yaml模块 pip install PyYAML yaml的写法

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包