jenkins声明式流水线语法详解

最基本的语法包含

  • pipeline:所有有效的声明式流水线必须包含在一个 pipeline 块中
  • stages:包含一系列一个或多个stage指令
  • stage:stage包含在stages中进行,比如某个阶段
  • steps:在阶段中具体得执行操作,一个或多个步骤

agent

指定了整个流水线特定的机器,比如多台slave节点,可以被定义在pipeline块顶层也可以根据stage层定义使用
(jenkins提供比较常用的流水线语法生成,输入对应的参数会自动生产)
在这里插入图片描述

  • any:在任意可用代理上执行流水线阶段。agent any
  • label:在配置标签得jenkins环境中可用代理上执行。agent {label ‘my slave’}
  • node:agent { node { label ‘labelName’ } } 和 agent { label ‘labelName’ } 一样, 但是 node 允许额外的选项 (比如 customWorkspace )

pipeline定义:

pipeline {agent {label 'test1'}stages {stage('Hello') {steps {echo 'Hello World'}}}
}

stage阶段定义:

pipeline {agent anystages {stage('Hello') {agent {label 'test1'}steps {echo 'Hello World'}}}
}

post

post部分定义一个或多个steps,这些阶段根据流水线完成情况而运行

  • always:无论流水线完成状态如何,都继续运行
  • changed:当前流水线完成状态与之前不同时,运行该步骤
  • failure:当前流水线完成状态失败时,运行该步骤
  • success:当前流水线完成状态成功时,运行该步骤
  • unstable:当前流水线完成状态不稳定时,运行该步骤
  • aborted:当前流水线完成状态中断时,运行该步骤
pipeline {agent anystages {stage('Hello') {steps {echo 'Hello World'//echox 'hello world' (失败时)}}}post {always {echo "无论如何都运行"}failure {echo "失败后运行"}success {echo "执行成功后运行"}aborted {echo "异常中断运行"}}
}

模拟不同状态
always + success
在这里插入图片描述
always + aborted
在这里插入图片描述
always + failure
在这里插入图片描述

stages

包含一个或多个stage指令,至少包含一个

stage

一个stage标识一个阶段

steps

定义一些列一个或多个步骤操作

pipeline {agent anystages {stage('Hello') {steps {echo 'Hello World'sh 'date'sh 'pwd'}}}
}

environment

定义为所有步骤的环境变量,全局变量/局部变量取决于environment在流水线的那个位置

示例

pipeline {agent anyenvironment {CC = '全局变量'}stages {stage('Hello') {environment {VV = '局部变量'}steps {echo "this is ${CC}"echo "this is ${VV}"}}}
}

结果
在这里插入图片描述

options

允许从流水线内部配置特定的选项,比如timestamps

  • disableConcurrentBuilds:禁止并发构建
  • skipStagesAfterUnstable:构建状态不稳定时,跳过
  • timeout:运行超时时间
  • retry:失败时,重新构建的次数
  • timestamps:控制台时间输出
  • ansiColor:日志输出中启用ANSI颜色代码的支持

示例

pipeline {agent anyoptions {ansiColor('xterm')disableConcurrentBuilds()retry(3)timeout(time: 30, unit: 'SECONDS')timestamps()skipStagesAfterUnstable()}stages {stage('Hello') {steps {echo "hello world"echo "\033[32mThis text is green\033[0m"}}}
}

结果
在这里插入图片描述

parameters

提供用户在触发流水线时应该提供的参数列表,参数化构建

  • string:字符串类型参数
  • booleanParam:布尔参数
  • choice:从预定义选项列表中选择
  • password:密码参数

示例

pipeline {agent anyparameters {string (defaultValue: 'master', description: '主分支区分', name: 'BRANCH_NAME')choice (choices: ['dev', 'prod', 'pre'], description: '环境区分', name: 'ENVIRONMENT')}stages {stage('Example') {steps {checkout scmGit(branches: [[name: '${BRANCH_NAME}']], extensions: [], userRemoteConfigs: [[credentialsId: 'ae008f10-597f-4332-b2f7-790c9b01074e', url: 'https://gitee.com/liujiangxu/dubbo-demo-web.git']])}}stage('deploy') {steps {script {echo "Deploying to ${ENVIRONMENT} environment"}}}    }
}

结果
在这里插入图片描述
在这里插入图片描述

triggers

定义流水线被重新触发的自动化方式

  • cron:执行间隔,类似任务计划
  • pollSCM:在设置间隔中,jenkins会检查新的源代码更新,如果更新,会被触发
  • upstream:其他工程构建后触发

cron示例

pipeline {agent anytriggers {cron 'H(29-30) */4 * * * '}stages {stage('Example') {steps {echo 'Hello World'}}}
}

upstream示例

pipeline {agent anytriggers {upstream 'ceshi-pip'}stages {stage('Example') {steps {echo '当ceshi-pip任务执行后,触发我自动执行'}}}
}

pollSCM示例

pipeline {agent anytriggers {pollSCM '* * * * *'}stages {stage('checkout') {steps {checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'ae008f10-597f-4332-b2f7-790c9b01074e', url: 'https://gitee.com/liujiangxu/dubbo-demo-web.git']])echo "源代码已更新"}}stage('build') {steps {sh 'mvn clean package -DskipTests=true'}}stage('deploy') {steps {echo "实际部署步骤,如执行脚本部署等操作"}}}
}

tools

定义自动安装和放置PATH的工具一部分,根据全局工具配置选项自定义选择(例如不同业务需要不同的jdk8或者jdk11)如果 agent none 指定,则忽略该操作

  • maven:编译环境
  • jdk:java环境

示例

pipeline {agent anytools {jdk 'openjdk11.0.18'maven 'maven1'}stages {stage('Example') {steps {sh 'mvn --version'sh 'java -version'}}}
}

when

指令允许流水线根据给定的条件决定是否执行该阶段。when必须包含一个条件,当包含多个条件时,所有子条件必须返回true才会执行

  • branch:用于检查当前构建的分支是否与指定的分支模式匹配时执行
  • environment:用于检查环境变量是否满足给定的名称和值。如果环境变量存在且值匹配时执行
  • not:用于反转另一个条件的结果。如果内部条件不满足(即返回false)时执行
  • allOf:用于组合多个条件,只有当所有子条件都满足时(即都返回true)时执行
  • anyOf:用于组合多个条件,但与allOf不同,只要至少一个子条件满足(即返回true),就会执行

bracnch示例

pipeline {agent anystages {stage('build on master') {when {branch 'master'}steps {echo '构建为master分支时执行' //跳过执行} }    }
}

environment示例

pipeline {agent anystages {stage('deploy to prod') {environment {DEPLOY_X = 'dev'}when {environment name: 'DEPLOY_X', value: 'prod'}steps {echo '当变量参数为prod环境时执行' //跳过执行} }    }
}

not示例

pipeline {agent anyenvironment {DEPLOY_X = "dev"}stages {stage('not build on master') {when {not {environment name: 'DEPLOY_X', value: 'prod'}}steps {echo '当变量参数不为prod环境时执行' //会执行} }    }
}

allOf 示例

pipeline {agent anyenvironment {DEPLOY_X = "prod"}stages {stage('not build on master') {when {allOf {environment name: 'DEPLOY_X', value: 'prod'not {branch 'master'}}}steps {echo '当环境变量等于prod 和 分支不属于master时执行(即所有条件都满足)'//会执行} }    }
}

anyOf 示例

pipeline {agent anyenvironment {DEPLOY_X = "prod"}stages {stage('not build on master') {when {anyOf {branch 'master'environment name: 'DEPLOY_X', value: 'prod'}}steps {echo '当环境变量等于prod 或者 分支属于master时执行(即所有条件满足一项即可)' //会执行} }    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解网络的相关信息

文章目录 前言了解网络的相关信息1. ip是什么?1.1. 公网IP:1.2. 私有IP:1.2.1. 示例 2. 子网掩码3. 子网掩码的划分网段是什么4. 特殊的回路IP网段(127.0.0.1)5. 端口 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊&#x…

VIGOSERVO帝人伺服驱动器维修ARN135-F ARS135-25

帝人VIGOSERVO驱动器维修TEIJIN SEIKI伺服驱动器全系列型号修理。 关于VIGOSERVO伺服驱动器维修的相关内容,可以归纳为以下几个方面: 一、维修概述 VIGOSERVO伺服驱动器作为自动化设备组件,多应用于工业机器人、数控加工等高精度传动系统中…

如何实现工业设备联网?天拓四方

一、引言 随着信息技术的快速发展,工业设备联网已成为推动工业4.0和智能制造的核心技术之一。工业设备联网通过将传统的工业设备与互联网、云计算、大数据等技术相结合,实现了设备之间的互联互通,数据共享与智能分析,极大地提高了…

CSS的弹性盒子模型(Flex box)

弹性盒子模型是CSS3的一种新的布局模式,弹性盒是一种当页面需要适应不同的屏幕大小以及设备类型时确保拥有合适的布局方式,引入弹性盒子模型的目的时提供更加有效的方式来对一个容器中的子元素进行排列,对齐和分配空白空间。 弹性盒子由弹性容…

[Redis][Set]详细讲解

目录 0.前言1.常用命令1.SADD2.SMEMBERS3.SISMEMBER4.SCARD5.SPOP6.SMOVE7.SREM 2.集合间操作0.是什么?1.SINTER2.SINTERSTORE3.SUNION4.SUNIONSTORE5.SDIFF6.SDIFFSTORE 3.内部编码1.intset(整数集合)2.hashtable(哈希表) 4.使用场景 0.前言 集合类型也是保存多个字…

BaseCTF2024 web

Web [Week1] HTTP 是什么呀 GET: ?basectf%77%65%31%63%25%30%30%6d%65POST: BaseflgX-Forwarded-For:127.0.0.1Referer: BaseCookie: c00k13i cant eat itUser-Agent: Base有Location跳转, 抓包得到flag: QmFzZUNURntkZGUzZjA0Yy1hMDg5LTQwNGMtOTFjNi01ODZjMzAxMzM3Y2J9Cg…

[element-ui]记录对el-table表头样式的一些处理

1、表头换行 & 列表项换行 可用element-table组件自带的方法实现列标题换行的效果 2、小圆点样式

3D模型在UI设计中应用越来越多,给UI带来了什么?

当前3D模型在UI设计中应用很多,极大地拓展了UI设计的发挥空间,也拓宽了UI的应用领域,本文分享下UI中引入3D模型到底能带来什么价值. 3D模型在UI设计中的应用可以给用户界面带来以下几个方面的好处: 更真实的视觉体验:…

无人机的避障的航迹规划详解!!!

一、无人机避障技术 视觉避障系统:通过安装在无人机上的摄像头捕捉周围环境的图像,利用计算机视觉技术对图像进行处理和分析,提取出障碍物的信息。这种方法直观、信息丰富,但在光线不足或变化多的情况下可能影响识别效果&#xf…

高效快捷回复软件

当你的店铺正如火如荼地运营时,你是否曾因为繁琐的客服回复工作而感到力不从心?自己创业、自营客服或是外包客服,都需要一个强大的工具来帮助你高效处理客户咨询。那么,这款全新的高效快捷回复软件—客服宝聊天助手,就…

WLS2连接本地USB设备的方法

WLS2连接本地USB设备的方法 说明windows端1.下载usbipd-win并安装2.启动WSL3.以管理员身份运行Windows PowerShell”4.WSL中查看USB设备 说明 WLS2连接本地USB设备的方法 windows端 1.下载usbipd-win并安装 可下载**.msi文件,双击即可安装 2.启动WSL 3.以管理…

矿山、石场重型机械设备数据集-挖掘机-自卸卡车-轮式装载机

描述 本项目旨在创建一个高效的计算机或机器视觉模型,用于在建筑工地检测不同种类的施工设备,我们从三个类别开始:挖掘机、卡车和轮式装载机。 数据集的理学硕士提供。 原始图像(v1)包含: 1,532个标注…

word中的表格全部设置宽度100%

1、背景 我们用工具将数据库或其他的数据导出成word时,表格有的会大于100%,超过了边界。word没有提供全局修改的方法。如果我们想改成100%。 一种方式是通过宏,全局改。一种是手动改。 2、宏修改 如果表格多,可以通过这种方式。…

SpringBoot的概述与搭建

目录 一.SpringBoot的概述 二.SpringBoot 特点 三.SpringBoot 的核心功能 3.1起步依赖 3.2自动配置 四.SpringBoot 开发环境构建 五.SpringBoot 配置文件 六.SpringBoot数据访问管理 七.springboot注解 八.springboot集成mybatis 九.springboot全局异常捕获与处理 一…

【第十五章:Sentosa_DSML社区版-机器学习之关联规则】

目录 15.1 频繁模式增长 15.2 PrefixSpan 【第十五章:Sentosa_DSML社区版-机器学习之关联规则】 机器学习关联规则是一种用于发现数据集中项之间有趣关系的方法。它基于统计和概率理论,通过分析大量数据来识别项之间的频繁共现模式。 15.1 频繁模式增…

数据在内存中的存储以及练习(一篇带你清晰搞懂)

一:数据在内存中的存储 首先,如果要了解数据在内存中的存储,我们首先要了解一个概念 大小端是什么? 1:什么是大小端? 其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题&#xff0c…

QT-Qt概述安装Qt创建项目常用基础部件信号和槽

1. Qt概述 Qt 是一个跨平台的 C图形用户界面应用程序的开发框架。 图形用户界面: GUI (Graphical User Interface) 框架:别人写好的一堆类(工具包)和开发规则。使用框架开发,能够大大降低程序的…

新建flask项目,配置入口文件,启动项目

pycharm新建flask项目时,会提供一个创建flask项目的导向,自动设置虚拟环境,并且安装flask及其依赖而vscode新建flask项目时,需要手动设置虚拟环境并安装flask,需要在终端使用pip install flask命令来安装flask及其依赖…

代码随想录 | Day25 | 二叉树:从中序与后序遍历构造二叉树最大二叉树

代码随想录 | Day25 | 二叉树:从中序与后序遍历构造二叉树&&最大二叉树 主要学习内容: 用中序和后序来构建二叉树 106.从中序与后序遍历构造二叉树 106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) 解法思路&a…

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下玩转iSulad容器技术

828华为云征文|华为云Flexus云服务器X实例部署Xnote笔记应用 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、iSulad介绍2.1 iSulad简介2.2 iSulad特点 三、本次实践介绍3.1 本次实践…