Jenkins ——pipeline入门教程

news2024/11/24 17:35:00

一、什么是pipeline

什么是Pipeline?简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程(实用场景:将多个Jenkins构建任务轻松集成)。

  简而言之,就是一套工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
  目前比较流行的pipeline实践方式如下。

  • gitlabrunner: 是gitlab内置的一套pipeline框架,脚本是yml语言。
  • jenkins: 通过安装插件的形式实现,脚本语言是jenkinsfile。

Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

  • Jenkinsfile:是 Jenkins Pipeline 的配置文件,包含了流水线执行的各种操作。

使用条件

要使用Jenkins Pipeline,需要: Jenkins 2.x或更高版本、Pipeline插件

使用语言

Pipeline脚本是用Groovy写的 。

二、pipeline在哪

首先确保Jenkins上已经有pipeline相关插件。如果想在Jenkins上新建一个pipeline Job,按照下列步骤操作:

1、单击Jenkins主页上的New Item。

2、输入Pipeline的名称,选择Pipeline,然后单击确定。

3、最后点击完成,一个pipeline项目就生成了

三、一个简单的pipeline脚本

pipeline项目中实际起作用的就是pipeline 脚本部分,这里写一个HelloWorld,编辑后点击保存,期望执行打印hello world操作。

由于这个脚本是无参数的,所以直接点击Build Now就可以了,来查看一下构建结果,

可以看到最后输出了期望的 Hello world!

这里对语法进行简单介绍

Example

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

复制

agent

在任何可用的agent 上执行Pipeline或stage。例如:agent any

还有其他的agent后面可跟的参数,例如:none,label,node,docker

none

当在pipeline块的顶层使用none时,将不会为整个Pipeline运行分配全局agent ,每个stage部分将需要包含其自己的agent部分。

label

使用提供的label标签,在Jenkins环境中可用的代理上执行Pipeline或stage。例如:agent { label 'my-defined-label' }

node

agent { node { label 'labelName' } },等同于 agent { label 'labelName' },但node允许其他选项(如customWorkspace)。

docker

定义此参数时,执行Pipeline或stage时会动态供应一个docker节点去接受Docker-based的Pipelines。docker还可以接受一个args,直接传递给docker run调用。例如:agent { docker 'maven:3-alpine' }

stages

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

steps

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

总结:

1、Pipeline最基本的部分是“step”。基本上,step告诉Jenkins 要做什么,并且作为Declarative Pipeline和Scripted Pipeline语法的基本构建块。

2、Pipeline支持两种语法:Declarative Pipeline(在Pipeline 2.5中引入,结构化方式)和Scripted Pipeline,两者都支持建立连续输送的Pipeline。

3、所有有效的Declarative Pipeline必须包含在一个pipeline块内,例如:

pipeline { /* insert Declarative Pipeline here */ }

4、Declarative Pipeline中的基本语句和表达式遵循与Groovy语法相同的规则 ,但有以下例外:

a.Pipeline的顶层必须是块,具体来说是:pipeline { }

b.没有分号作为语句分隔符。每个声明必须在自己的一行

c.块只能包含Sections, Directives, Steps或赋值语句。

四、pipeline实际实用意义

前文说了Pipeline是将原本独立运行于单个或者多个节点的任务连接起来

https://www.cnblogs.com/mq0036/p/16146065.html

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

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

相关文章

最优化方法Python计算:一元函数搜索算法——二次插值法

已知连续函数 f ( x ) f(x) f(x)在 x ∗ x^* x∗近旁存在最优解 x 0 x_0 x0​。对博文《最优化方法Python计算:连续函数的单峰区间计算》讨论的 f ( x ) f(x) f(x)单峰区间的包围算法稍加修改,可算得 f ( x ) f(x) f(x)包含 x 0 x_0 x0​的单峰区间 [ a …

pandas---删除重复行、映射、异常值检测与过滤、抽样

1. 删除重复行 使用duplicated()函数检测重复的行。 返回布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True。 def make_df(indexs, columns): data [[str(j)str(i) for j in columns] for i in indexs]df …

中国人民大学与加拿大女王大学金融硕士——用更长远的眼光,展望未来

职场中遇到瓶颈,大家都迫切希望改变自己所处的环境,但却不愿意改变自己,所以他们自己仍然是被束缚的。如果一个人不能够从自我拷问的状态中解脱出来,他就永远也不可能实现自己心中的目标。我们要用更长远的眼光去展望未来&#xf…

NAVIGATE 领航者峰会:记忆科技携手新华三,以存储创新释放数据价值

近日,由紫光集团和新华三集团主办的2023 NAVIGATE 领航者峰会在杭州举行。本届峰会的主题为“精耕务实,为时代赋智慧”,围绕该主题,国内外数千名技术领导者汇聚一堂,探讨数字经济的创新未来。作为IT硬件领域的重要厂商…

vue + g6 实现树级结构(compactBox 紧凑树)

G6文档 自定义节点 G6.registerNode("dom-node",{draw: (cfg, group) > {let str <div classitem-box catalog-node ${cfg.isSelected ? "is-selected" : ""} ${cfg.status}-box οnclickhandleDetail("${cfg.id}") id&quo…

JMeter压测如何分配业务比例?

在进行综合场景压测时&#xff0c;由于不同的请求&#xff0c;要求所占比例不同&#xff0c;那如何实现呢&#xff1f; 有人说将这些请求分别放到单独的线程组下&#xff0c;然后将线程组的线程数按照比例进行配置&#xff0c;这种方法不是很好&#xff0c;想想&#xff0c;不…

5G是如何提升通行能力的?5G毫米波到底有多快?

高速公路&#xff0c;可以通过多层交通、多条车道、车道方向、车辆容量、货物包装、驾驶司机等多个因素&#xff0c;提升通行能力。 我们把5G比作高速公路&#xff0c;那么&#xff0c;5G是如何提升自身通行能力的呢&#xff1f;5G毫米波&#xff0c;到底能有多快呢&#xff1f…

跨越时空的教育:在线培训系统的全球化

随着全球化的发展&#xff0c;跨越时空的教育已经成为现实。在线培训系统可以打破地域限制&#xff0c;让学生能够接受来自世界各地的教育资源。这种新型教育模式具有巨大的潜力和优势。 在线培训系统是指通过互联网提供的远程教育服务。它可以通过网络平台、视频教育、虚拟课…

如何优雅地使用Low Code提高开发效率

2023年&#xff0c;低代码热度有&#xff0c;但是在企业内部核心场景的落地比例不高&#xff0c;推进进展也没有想象中快。就算是这样&#xff0c;低代码赛道也在“暗流涌动”。 数字化趋势下&#xff0c;很多企业想要以数字化的手段进行降本增效。很多企业希望以低代码的模式…

【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS

JTS Java Topology Suite 几何计算&#xff1a; 1. 前端js就用这个 Turfjs的类库。参考网站&#xff1a; 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库&#xff0c;参考网站&#xff1a; JTS参考网站&#xff1a; 1. https://github.com/locatio…

【机器学习】神经网络代价函数和反向传播算法

神经网络的代价函数 接下来我会再规定若干符号代表的含义&#xff1a; L L L表示神经网络的总层数 s i s_i si​表示的是第i层的神经元数量 如果神经网络处理的是一个二元分类问题&#xff0c;那么他的第L层就只会有一个节点&#xff1b;如果处理的是一个多元分类问题&…

不知不觉创作一年了,谈谈我的创作经历

前言 大家好&#xff0c;我是小刘在C站&#xff0c;不知不觉创作1年啦&#xff0c;本次文章呢分享一下我这一路走来的经历吧 目录 前言 1.为什么写博客 2.第一篇文章 3.怎么坚持创作的&#xff1f; 4.自我介绍 5.收获 6.认识了哪些大佬呢&#xff1f; 7.未来规划 8.分…

【C++】STL的string容器介绍

目录 1、string容器 1.1声明一个c字符串 1.2string和c字符数组的比较 1.3string类操作函数介绍 1.3.1赋值操作 1.3.2字符串拼接 1.3.3字符串查找 1.3.4字符串替换 1.3.5字符串比较 1.3.6字符存取 1.3.7字符串插入 1.3.8字符串删除 1.3.9子串获取 1、string容器 在…

测试4年外包已上岸 , 我只能说这类公司能不去尽量别去···

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是4年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&#xff0c;千万…

从零开始Vue项目中使用MapboxGL开发三维地图教程(五)实现框选要素功能、可拖动点展示坐标以及地图上实时更新要素

文章目录 1、实现框选要素功能1.1、添加点数据的图层&#xff1a;1.2、增加绘图插件&#xff08;mapbox-draw&#xff09;1.3、实现框选并让选择的目标数据高亮 2、实现地图上可拖动点2.1、实现功能&#xff1a;2.2、实现思路&#xff1a;2.3、代码示例&#xff1a; 3、实时更新…

已安装过PageOfiice,谷歌浏览器反复提示PageOffice安装

原因&#xff1a;Chrome开发团队以网络安全为由&#xff0c;强推ssl证书&#xff0c;希望所有部署在公网的网站&#xff0c;全部改用https访问&#xff0c;所以最新的谷歌和edge升级到94版本后对公网上的http请求下的非同域的http请求进行了拦截&#xff0c;于是就出现了目前遇…

火灾发生时如何实时地选择逃生路线

安科瑞虞佳豪 南京大学无菌动物房改造项目&#xff0c;位于位于南京江北新区学府路 12 号。改造面积约为 1100m2&#xff0c;均在原有建筑底层。其中&#xff0c;动物房区域含饲养室 6 间&#xff0c;层高 4.9m。功能实验区域含实验室 4间、手术室 1 间、暂养室 2 间、内外准备…

Linux进程信号 | 信号产生

前面的文章中我们讲述了进程间通信的部分内容&#xff0c;在本文中我们继续来学习进程信号相关的知识点。 信号入门 生活角度的信号 在我们的日常生活中&#xff0c;就有着各种各样的信号&#xff0c;它会给我们传递各种各样的信息&#xff0c;可以知道的是一个信号例如&…

webpack提升开发体验SourceMap

一、开发场景介绍 开发中我们不可避免的会写一些bug出来&#xff0c;这时候要调试&#xff0c;快速定位到bug到底出现在哪尤为关键。 例如我故意在sum函数中写一个错误代码如下&#xff1a; 这时我们用前面章节已经写好的开发模式的webpack.dev.js运行&#xff0c;控制台会出…

【Spring】— MyBatis与Spring的整合

目录 1.整合环境1.1准备所需的JAR包1&#xff0e;所需Spring框架的JAR包2&#xff0e;所需MyBatis框架的JAR包3&#xff0e;MyBatis与Spring整合所需的中间JAR包4&#xff0e;数据库驱动JAR包5&#xff0e;数据源所需JAR包 1.2 编写配置文件 2.整合2.1 传统DAO方式的开发整合1&…