Jenkins-pipeline语法说明

一. 简述:

   Jenkins Pipeline 是一种持续集成和持续交付(CI/CD)工具,它允许用户通过代码定义构建、测试和部署流程。

二. 关于jenkinsfile:

 1. Sections部分:

   Pipeline里的Sections通常包含一个或多个Directives或 Steps:

a). agent:

      指定整个Pipeline或特定阶段将在Jenkins环境中执行的节点位置,具体取决于该agent 部分的配置。该部分必须在pipeline块内的顶层定义 ,但在stage中是可以使用的。

#agent可选项: 1). any:任何可用agent上执行。2). none:不会为整个Pipeline运行分配全局agent ,每个stage部分将需要包含其自己的agent部分3).  label: 使用提供的label标签,在Jenkins环境中可用的代理上执行Pipeline或stage(agent { label 'my-defined-label' })4).  node: agent { node { label 'labelName' } },等同于 agent { label 'labelName' },但node允许其他选项5). docker:执行Pipeline或stage时会动态供应一个docker节点去接受Docker-based的Pipelines。6). dockerfile: 使用从Dockerfile源存储库中包含的容器来构建执行Pipeline或stage eg:pipeline {agent none stages {stage('Example Build') {agent { docker 'maven:3-alpine' } steps {echo 'Hello, Maven'sh 'mvn --version'}}stage('Example Test') {agent { docker 'openjdk:8-jre' } steps {echo 'Hello, JDK'sh 'java -version'}}}
}常用选项: 
#label : 标签,适用于node,dockr anddockerfile时,并且node是必须的 
#customWorkspace: 自定workspace路径
#reuseNode:一个布尔值,默认为false。如果为true,则在同一工作空间中,。只适用于docker和dockerfile,并且仅在 individual stage中使用agent才有效eg:
agent {node {label 'my-defined-label'customWorkspace '/some/other/path'}
}

b).  POST:

     定义将在Pipeline运行或阶段结束时运行的操作。部分 always,changed,failure,success,unstable,和aborted。这些块允许在Pipeline运行或stage结束时执行,具体取决于Pipeline的状态。

#post 可选项:#always:无论Pipeline运行的完成状态如何。
#changed:当前Pipeline运行的状态与先前完成的Pipeline的状态不同时。
#failure:当前Pipeline处于“失败”状态时。
#success:当前Pipeline具有“成功”状态时
#unstable:当前Pipeline具有“不稳定”状态,如由测试失败,代码违例等引起。
#aborted:当前Pipeline处于“中止”状态时,通常是由于Pipeline被手动中止。eg:
pipeline {agent anystages {stage('Example') {steps {echo 'Hello World'}}}post { always { echo 'I will always say Hello again!'}}
}通常情况下,post定义在pipeline的末端。

c). stages :包含一个或多个stage的序列,Pipeline的大部分工作在此执行。建议stages至少包含至少一个stage指令,用于连接各个交付过程,如构建,测试和部署等。

d). steps :

   包含一个或多个在stage块中执行的step序列。

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

2.  Directives(指令) 部分:

a).  environment:

     指定一系列键值对,这些键值对将被定义为所有step或stage-specific step的环境变量,具体取决于environment指令在Pipeline中的位置。该指令支持一种特殊的方法credentials(),可以通过其在Jenkins环境中的标识符来访问预定义的凭据。

pipeline {agent anyenvironment { CC = 'clang'   # 顶级pipeline中定义的env适用于所有steps}stages {stage('Example') {environment {    #只能适用于该过程的stepsAN_ACCESS_KEY = credentials('my-prefined-secret-text')  #可在jenkins环境中通过其标示访问定义的凭据。}steps {sh 'printenv'}}}
}

b). options :

      options指令允许在Pipeline本身内配置Pipeline专用选项。Pipeline本身提供了许多选项,例如buildDiscarder,但它们也可能由插件提供,例如 timestamps。

#可用选项:
buildDiscarder:  pipeline保持构建的最大个数。
disableConcurrentBuilds: 不允许并行执行Pipeline,可用于防止同时访问共享资源等。
skipDefaultCheckout: 默认跳过来自源代码控制的代码。
skipStagesAfterUnstable: 一旦构建状态进入了“Unstable”状态,就跳过此stage。
timeout: 设置Pipeline运行的超时时间。
retry: 失败后,重试整个Pipeline的次数。
timestamps: 预定义由Pipeline生成的所有控制台输出时间。 eg:
pipeline {agent anyoptions {timeout(time: 1, unit: 'HOURS')  #指定一个小时的全局执行超时,超出后中止运行}stages {stage('Example') {steps {echo 'Hello World'}}}
}

c). parameters :

     提供用户在触发Pipeline时的参数列表。这些参数值通过该params对象可用于Pipeline步骤。

#string:  字符串类型
#booleanparam: 布尔参数eg: 
pipeline {agent anyparameters {string(name: 'PERSON', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')}stages {stage('Example') {steps {echo "Hello ${params.PERSON}"}}}
}

d). triggers(触发器):

     定义了Pipeline自动化触发的方式。对于与源代码集成的Pipeline,如GitHub或BitBucket,triggers可能不需要基于webhook的集成也已经存在。目前只有三个个可用的触发器:cron,pollSCM,upstream。

cron:接受一个cron风格的字符串来定义Pipeline触发的常规间隔,例如: triggers { cron('H 4/* 0 0 1-5') }
pollSCM:接受一个cron风格的字符串来定义Jenkins检查SCM源更改的常规间隔。如果存在新的更改,则Pipeline将被重新触发。例如:triggers { pollSCM('H 4/* 0 0 1-5') }
upstream: 接受逗号分隔的一系列作业和一个阈值。当字符串中的任何作业以定义的阈值结束时,管道将被重新触发,跨job。eg:
pipeline {agent anytriggers {cron('H */4 * * 1-5')}stages {stage('Example') {steps {echo 'Hello World'}}}
}

e). tools:

   通过tools可自动安装工具,并放置环境变量到PATH。如果agent none,这将被忽略。

pipeline {agent anytools {//工具名称必须在Jenkins 管理Jenkins → 全局工具配置中预配置。maven 'apache-maven-3.0.1'}stages {stage('Example') {steps {sh 'mvn --version'}}}
}

f). when:

  允许Pipeline根据给定的条件确定是否执行该阶段。该when指令必须至少包含一个条件。如果when指令包含多个条件,则所有子条件必须为stage执行返回true。这与子条件嵌套在一个allOf条件中相同(见下面的例子)。

更复杂的条件结构可使用嵌套条件建:not,allOf或anyOf。嵌套条件可以嵌套到任意深度。

#内置参数:
branch: 当正在构建的分支与给出的分支模式匹配时执行
environment:当指定的环境变量设置为给定值时执行
expression:当指定的Groovy表达式求值为true时执行
not:当嵌套条件为false时执行。必须包含一个条件
allOf:当所有嵌套条件都为真时执行。必须至少包含一个条件
anyOf:当至少一个嵌套条件为真时执行。必须至少包含一个条件eg:
pipeline {agent anystages {stage('Example Build') {steps {echo 'Hello World'}}stage('Example Deploy') {when {branch 'production'}steps {echo 'Deploying'}}}
}

3. Parallel(并行):

 对耗时长,相互不存在依赖的stage可以使用此方式提升运行效率。除了parallel stage,单个parallel里的多个step也可以使用并行的方式运行。

pipeline {agent anystages {stage('Non-Parallel Stage') {steps {echo 'This stage will be executed first.'}}stage('Parallel Stage') {when {branch 'master'}failFast trueparallel {stage('Branch A') {agent {label "for-branch-a"}steps {echo "On Branch A"}}stage('Branch B') {agent {label "for-branch-b"}steps {echo "On Branch B"}}}}}
}

script:

    需要一个script Pipeline,并在Declarative Pipeline中执行。对于大多数用例,script在Declarative Pipeline中的步骤不是必须的,但它可以提供一个有用的加强(groovy  ?)。

pipeline {agent anystages {stage('Example') {steps {echo 'Hello World'script {def browsers = ['chrome', 'firefox']for (int i = 0; i < browsers.size(); ++i) {echo "Testing the ${browsers[i]} browser"}}}}}
}

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

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

相关文章

电商项目高级篇08-springCache

电商项目高级篇08-springCache 1、整合springCache2、Cacheable细节设置 1、整合springCache 1、引入依赖 <!--引入springCache--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifa…

【tailscale 和 ssh】当服务器建立好节点,但通过客户端无法通过 ssh 连接

背景 当服务器建立好节点&#xff0c;一切显示正常但通过客户端无法通过 vs code 中的 ssh 连接到服务器 问题解决 因为服务器是重装过的&#xff0c;所以忘记在服务器上下载 ssh 了。。。安装完成并启动 SSH 服务后便可正常连接&#xff01; sudo apt update sudo apt in…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)边缘检测

OpenCV中边缘检测四种常用算子&#xff1a; &#xff08;1&#xff09;Sobel算子 Sobel算子是一种基于梯度的边缘检测算法。它通过对图像进行卷积操作来计算图像的梯度&#xff0c;并将梯度的大小作为边缘的强度。它使用两个3x3的卷积核&#xff0c;分别用于计…

[实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()

目录 1. 项目介绍 2. 技术选型 3. 开发环境和环境搭建 Ubuntu-22.04环境搭建 1. 安装 wget&#xff08;一般情况下默认会自带&#xff09; 2. 更换国内软件源 ① 备份原始 /etc/apt/sources.list 文件 ② 编辑软件源文件 ③ 更新软件包列表 3. 安装常用工具 3.1 安装…

Golang Gin系列-1:Gin 框架总体概述

本文介绍了Gin框架&#xff0c;探索了它的关键特性&#xff0c;并建立了简单入门的应用程序。在这系列教程里&#xff0c;我们会探索Gin的主要特性&#xff0c;如路由、中间件、数据库集成等&#xff0c;最终能使用Gin框架构建健壮的web应用程序。 总体概述 Gin是Go编程语言的…

Node.js 与 JavaScript 是什么关系

JavaScript 是一种编程语言&#xff0c;而 Node.js 是 JavaScript 的一个运行环境&#xff0c;它们在不同的环境中使用&#xff0c;具有一些共同的语言基础&#xff0c;但也有各自独特的 API 和模块&#xff0c;共同推动着 JavaScript 在前后端开发中的广泛应用。 一、基础语言…

游戏引擎学习第81天

仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中&#xff0c;讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分&#xff0c;因为当时主要的工作重心不在这里&#xff0c;但在实现过程中&#xff0c;发现地…

IO多路复用详解-selectpollepoll

目录 1.IO多路复用概念 2.系统调用函数 2.1select 2.1.1select函数细节 2.2基于select实现并发处理 2.2.1处理流程 2.2.2服务端通信代码 2.2.3客户端通信代码 2.3基于poll函数实现并发处理 2.3.1select与poll函数区别 2.3.2poll函数 2.3.3服务器端代码实现 2.3.4客…

IDEA下载安装

目录 IDEAWin下载安装 Mac下载安装 IDEA中基本配置&注释修改背景主题为白色修改字体大小鼠标滚轮控制字体大小控制字母大小写提示&#xff08;取消勾选&#xff09;设置自动编译&#xff08;打勾&#xff09;自动保存&#xff08;参数为1&#xff09;设定参数提示&#xff…

A Dual-Module Denoising Approach 解读

系列博客目录 文章目录 系列博客目录1.这个GCN有什么用2.GCN是如何增强方面相关的情感表达 1.这个GCN有什么用 在本文中&#xff0c;图卷积网络&#xff08;GCN&#xff09;的作用可以总结为以下几点&#xff1a; 建模多模态依赖关系 GCN 利用 加权关联矩阵 (A)&#xff0c;将…

复用类(1):组合、继承

复用代码是java众多引人注目的功能之一。但要想成为极具革命性的语言&#xff0c;仅仅能够复制代码并对之加以改变是不够的&#xff0c;它还必须能够做更多的事情。 上述方法常为C这类过程型语言所使用&#xff0c;但收效不是很好。正如java中所有事物一样&#xff0c;问题解决…

.Net Core微服务入门全纪录(五)——Ocelot-API网关(下)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集

前面两篇已经交代AI和AENC模块的配置&#xff0c;这篇就让这两个模块绑定起来&#xff0c;绑定的原因是&#xff0c;Aenc从Ai模块拿到采集的原始数据进行编码。 使用 RK_MPI_SYS_Bind 把 AI 节点和 AENC 进行绑定&#xff0c;其中 enModId 是模块 ID 号选择的是 RK_ID_AI、s32C…

2.5G PoE交换机 TL-SE2109P 简单开箱评测,8个2.5G电口+1个10G光口(SFP+)

TPLINK&#xff08;普联&#xff09;的万兆上联的2.5G网管交换机TL-SE2109P简单开箱测评。8个PoE 2.5G电口&#xff0c;1个万兆SFP上联口。 2.5G交换机 TL-SE2420 简单开箱评测&#xff0c;16个2.5G电口4个10G光口(SFP)&#xff1a;https://blog.zeruns.com/archives/837.html…

若依框架搭建学习

按这位大神的教程一步一步来。我只写注意事项。 https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5OTgxOTg0Ng&actiongetalbum&album_id2441331662295973890&scene173&from_msgid2247483925&from_itemidx1&count3&nolastread1#wechat_redirect…

学成在线_内容管理模块_创建模块工程

学成在线模块工程 1.各个微服务依赖基础工程2.每个微服务都是一个前后端分离的项目3.xuecheng-plus-content&#xff1a;内容管理模块工程xuecheng-plus-content-modelxuecheng-plus-content-servicexuecheng-plus-content-api 1.各个微服务依赖基础工程 2.每个微服务都是一个前…

GCPAAS/DashBoard:完全免费的仪表盘设计,基于Vue+ElementUI+G2Plot+Echarts,开源代码,简单易用!还在等什么呢

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 GCPAAS/DashBoard&#xff0c;一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器&#xff0c;具备仪表盘目录管理…

登录校验Cookie、Session、JWT

目录 基础知识&#xff1a;登录校验的场景 基础知识&#xff1a;会话 ​编辑方案一&#xff1a;Cookie 方案二&#xff1a;Session 方案三&#xff1a;令牌技术 JWT 令牌 基础知识&#xff1a;登录校验的场景 基础知识&#xff1a;会话 什么是会话&#xff1f;什么是会话跟…

Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin

Android BitmapShader实现狙击瞄具十字交叉线准星&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.…

gitignore忽略已经提交过的

已经在.gitignore文件中添加了过滤规则来忽略bin和obj等文件夹&#xff0c;但这些文件夹仍然出现在提交中&#xff0c;可能是因为这些文件夹在添加.gitignore规则之前已经被提交到Git仓库中了。要解决这个问题&#xff0c;您需要从Git的索引中移除这些文件夹&#xff0c;并确保…