当前位置: 首页 > news >正文

软件测试/测试开发丨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工具

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 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/26711 1. Jenkins节点 1.1 常用的节点 内建节点SSH节点Java Web节点 1.1.1 SSH节点配置 远程工作目录 节点中必须有该目录,用于下载和运行j…...

java多线程——线程池

线程池 线程池创建线程池关闭线程池使用获取多个结果 线程池 一个线程池中存在许多准备运行的空闲线程,把Runnable对象交给线程池,会有一个线程调用其run()方法,当调用完后线程不会死亡,而是在池中继续为下一次请求服务 利用线程…...

Linux文件操作

目录 复制文件、目录 cp 移动 重命名文件或目录 mv 创建删除文件 touch rm(remove) 创建删除目录 mkdir(make directory) rmdir(remove directory) 复制文件、目录 cp cp(copy) 同一个目录下复制,所以重命名了一下;把它复制到linuxcast.net/目录下可以…...

Tomcat多实例 + Tomcat负载均衡、动静分离(Nginx联动)

多实例联动 一、Tomcat 多实例1.1 什么是Tomcat多实例?1.2 配置思路1.3 配置实现1.3.1 安装jdk1.3.2 安装tomcat1.3.3 配置 tomcat 环境变量1.3.4 修改端口号1.3.5 修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量1.3.6 启…...

bootstrap和application的区别

SpringBoot项目的配置文件支持两种四个: bootstrap和application。 YML文件两个:bootstrap.yml,application.yml 属性文件两个:bootstrap.properties,application.properties 配置文件优先级 SpringBoot支持同时使用…...

【狂神】SpringMVC笔记(一)之详细版

1.Restful 风格 概念: 实现方式: 使用PathVariable 在url相同的情况下,会根据请求方式的不同来执行不同的方法。 使用RestFull风格的好处:简洁、高效、安全 2、接受请求参数及数据回显 2.1、请求参数 方式一:这里…...

vue 对axios进行封装

token配置、中英文配置、对所有接口统一设置防抖、对所有post接口统一设置节流 废话少说直接上代码 request.js import axios from axios // 使用element-ui Message做消息提醒 import { ElMessage } from element-plus//这是为了防止刁民反复切换页面,切换页面…...

第十二章 YOLO的部署实战篇(下篇-cuda)

cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…...

原生JavaScript+PHP多图上传实现

摘要 很多场景下需要选择多张图片上传&#xff0c;或者是批量上传以提高效率&#xff0c;多图上传的需求自然就比较多了&#xff0c;本文使用最简单的XMLHttpRequest异步上传图片。 界面 上传示例 代码 index.html <!DOCTYPE html> <html><head><titl…...

企业架构LNMP学习笔记30

1、upstream 中server的关键字&#xff1a;语法&#xff1a; upstream中的分发之后的几个关键字&#xff1a; 1&#xff09;backup 备 其他的没有backup标识的都不可用了&#xff0c;才分发到backup&#xff1b; 2&#xff09;down 此条配置&#xff0c;不会被分发到。 syst…...

数学建模算法汇总(全网最全,含matlab案例代码)

数学建模常用的算法分类 全国大学生数学建模竞赛中&#xff0c;常见的算法模型有以下30种&#xff1a; 最小二乘法数值分析方法图论算法线性规划整数规划动态规划贪心算法分支定界法蒙特卡洛方法随机游走算法遗传算法粒子群算法神经网络算法人工智能算法模糊数学时间序列分析马…...

openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法

文章目录 openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法概述解决思路备注补充 - 新问题 - N1吸嘴到底部相机十字中心的位置差了很多END openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法 概述 自从用openpnp后, 无论版本(dev/test), 都发现一个大概…...

怎么提高自己当众讲话的能力?

当众讲话是一项重要的沟通技能&#xff0c;它可以帮助你在各种场合中表达自己的观点、影响他人&#xff0c;并建立自信。虽然对很多人来说&#xff0c;当众讲话可能是一项挑战&#xff0c;但通过一些实践和技巧&#xff0c;你可以提高自己的当众讲话能力。下面是一些方法&#…...

孙哥Spring源码第20集

第20集 refresh()-invokeBeanFactoryPostProcessor 四-处理Configuration下的Bean生成代理对象 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】【微信号&#xff1a;suns45】 1、二行InvokeBeanFactoryPostProcessors的作用 registryProcessors&#xff1a;处理的…...

【计算机网络】HTTP(上)

文章目录 1.HTTP概念2. URLurlencode 和 urldecode转义规则 3. HTTP的宏观理解HTTP的请求HTTP的响应 4. 见一见HTTP请求和响应请求报头 1. 模拟一个简单的响应response响应报头 2. 从路径中获取内容ReadFile函数的实现 3.不同资源进行区分反序列化的实现ReadOneLine函数的实现P…...

Maven学习记录

一、Maven是什么 简单来说Maven是一个标准化的java管理和构建工具&#xff0c;它提供了一系列规范&#xff0c;包括项目结构&#xff0c;构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;&#xff0c;依赖管理等。 标准化就是定下…...

H5游戏开发H5休闲小游戏定制H5软件定制

H5游戏是一种运行在网页浏览器中的HTML5技术开发的游戏。H5休闲小游戏通常具有简单的玩法&#xff0c;易于上手&#xff0c;适合快速的娱乐。以下是开发H5休闲小游戏的一般步骤&#xff1a; 1. 制定游戏开发概念&#xff1a; 确定H5游戏开发的主题和玩法。休闲小游戏通常应该…...

Spring基础及IoC容器的理解

Spring概念&#xff1a; 通常所说的Spring指的是Spring Framewprk(Spring框架)&#xff0c;它是一个开源的框架。用一句话概括就是&#xff1a;Spring是包含了众多工具方法的IoC容器。 什么是容器&#xff1f; 容器是用来容纳某种物品的装置&#xff0c;在之前的学习中&…...

护网行动为什么给的钱那么多

因为护网行动是国家应对网络安全问题所做的重要布局之一。 随着大数据、物联网、云计算的快速发展&#xff0c;愈演愈烈的网络攻击已经成为国家安全的新挑战。国家关键信息基础设施可能时刻受到来自网络攻击的威胁。网络安全的态势之严峻&#xff0c;迫切需要我们在网络安全领…...

软考知识汇总-计算机系统

文章目录 1 计算器 1 计算器 算术逻辑单元&#xff08;ALU&#xff09;&#xff1a;运算器重要组成部件&#xff0c;负责处理数据&#xff0c;实现对数据的算数运算和逻辑运算。累加寄存器&#xff08;AC&#xff09;&#xff1a;简称累加器&#xff0c;为ALU提供数据并暂存运…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...