Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pipeline 步骤(中)

pipeline 步骤(中)

原创
作者头像
陈不成i
修改于 2021-06-03 10:02:38
修改于 2021-06-03 10:02:38
1.7K0
举报
文章被收录于专栏:ops技术分享ops技术分享

二.制品相关

存取临时文件

stash步骤可以将一些文件保存起来,以便被同一次构建的其他步骤或阶段使用。如果整个pipeline的所有阶段在同一台机器上执行,则stash步骤是多余的。所以,通常需要stash的文件都是要跨Jenkins node使用的。

stash步骤会将文件存储在tar文件中,对于大文件的stash操作将会消耗Jenkins master的计算资源。Jenkins官方文档推荐,当文件大小为5∼100MB时,应该考虑使用其他替代方案。

stash步骤的参数列表如下:

  • name:字符串类型,保存文件的集合的唯一标识。
  • allowEmpty:布尔类型,允许stash内容为空。
  • excludes:字符串类型,将哪些文件排除。如果排除多个文件,则使用逗号分隔。留空代表不排除任何文件。
  • includes:字符串类型,stash哪些文件,留空代表当前文件夹下的所有文件。
  • useDefaultExcludes:布尔类型,如果为true,则代表使用Ant风格路径默认排除文件列表。

除了name参数,其他参数都是可选的。excludes和includes使用的是Ant风格路径表达式。

unstash步骤取出之前stash的文件。只有一个name参数,即stash时的唯一标识。通常stash与unstash步骤同时使用。

stash步骤在master节点上执行,而unstash步骤在node2节点上执行。

  1. pipeline {
  2.     agent none
  3.     stages {
  4.         stage('stash') {
  5.             agent { label "master" }
  6.             steps {
  7.                 script {
  8.                     writeFile file: "a.txt", text: "$BUILD_NUMBER"
  9.                     stash(name: "abc", include: "a.txt")
  10. }
  11. }
  12. }
  13.         stage("unstash") {
  14.             agent { label "node2" }
  15.             steps {
  16.                 script {
  17.                     unstash("abc")
  18.                     def content = readFile("a.txt")
  19.                     echo "${content}"
  20. }
  21. }
  22. }
  23. }
  24. }

三.命令相关

script

直接执行groovy的命令会报错,需要用script括起来。与命令相关的步骤其实是Pipeline:Nodes and Processes插件提供的步骤。由于它是Pipeline插件的一个组件,所以基本不需要单独安装。

  1. script {
  2. def browsers = ['chrome', 'firefox']
  3. for (int i = 0; i < brosers.size(); ++i) {
  4. echo "this is ${browsers[i]}"
  5. }
  6. }

sh

执行shell命令

sh步骤支持的参数有:

  • script:将要执行的shell脚本,通常在类UNIX系统上可以是多行脚本。
  • encoding:脚本执行后输出日志的编码,默认值为脚本运行所在系统的编码。
  • returnStatus:布尔类型,默认脚本返回的是状态码,如果是一个非零的状态码,则会引发pipeline执行失败。如果returnStatus参数为true,则不论状态码是什么,pipeline的执行都不会受影响。
  • returnStdout:布尔类型,如果为true,则任务的标准输出将作为步骤的返回值,而不是打印到构建日志中(如果有错误,则依然会打印到日志中)。除了script参数,其他参数都是可选的。
  • returnStatus与returnStdout参数一般不会同时使用,因为返回值只能有一个。如果同时使用,则只有returnStatus参数生效。
  1. sh "ls"
  2. sh(script: "/root/test.sh", returnStdout: true)

bat、powershell

bat步骤执行的是Windows的批处理命令。powershell步骤执行的是PowerShell脚本,支持3+版本。这两个步骤支持的参数与sh步骤的一样。

四.调用其它pipeline

在Jenkins pipeline中可以使用build步骤实现调用另一个pipeline功能。build步骤是pipeline插件的一个组件,所以不需要另外安装插件,可以直接使用。

build步骤其实也是一种触发pipeline执行的方式,它与triggers指令中的upstream方式有两个区别: 1.build步骤是由上游pipeline使用的,而upstream方式是由下游pipeline使用的。 2.build步骤是可以带参数的,而upstream方式只是被动触发,并没有带参数。

调用本章开头的例子,可以steps部分这么写:

  1. steps {
  2.     build(
  3.         job:"parameters-example",
  4.         parameters: [
  5.             booleanParam(name:'userFlag', value:true)
  6. ]
  7. )
  8. }

build步骤的基本2个参数 job(必填):目标Jenkins任务的名称 parameters(可选):数组类型,传入目标pipeline的参数列表。传参方法与定参方法类似

  1. parameters: [
  2.     booleanParam(name:'DEBUG_BUILD', value:true),
  3.     password(name:'PASSWORD', value:'prodSECRET'),
  4.     string(name:'DEPLOY_ENV', value:'prod'),
  5.     text(name:'DEPLOY_TEXT', value:'a\n\b\nc\n'),
  6.     string(name:'CHOICES00', value:'dev')
  7. ]

我们注意到choice类型的参数没有对应的传参方法,而是使用string传参方法代替的。

除此之外,build步骤还支持其他三个参数 propagate(可选): 布尔类型,如果值为true,则只有当下游pipeline的最终结构状态为SUCCESS时,上游pipeline才算成功;如果值为flase,则不论下游pipeline的最终构建状态是什么,上游pipeline都忽略。默认值为true

quietPeriod(可选): 整形,触发下游pipeline后,下游pipeline等待多久执行。如果不设置此参数,则等待时长由下游pipeline确定,单位为秒。

wait(可选): 布尔类型,是否等待下游pipeline执行完成。默认值为true。

如果你使用了Folder插件,那么就需要注意build步骤的job参数的写法了。 使用Folder插件,可以让我们像管理文件夹下的文件一样来管理Jenkins项目。我们的Jenkins项目可以创建在这些文件夹下。如果目标pipeline与源pipeline在同一目录下,则可以直接使用名称; 如果不在同一目录下,则需要指定相对路径,如 ../sister-folder/downstream 或绝对路径。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JenkinsPipeline语法概要
pipeline的代码定义了整个构建过程,通常包括构建应用程序,测试然后交付应用程序的阶段,下面是pipeline语法中的基本概念:
仙人技术
2020/05/12
5.3K0
Jenkins(四)
推荐VS Code扩展:Jenkins Pipeline Linter Connector
zx钟
2019/07/18
2.8K0
Jenkins(四)
2.Jenkins进阶之流水线pipeline语法入门学习
Q: 什么是 Groovy 语言 答: Groovy 是 Apache 旗下的一门基于 JVM 平台的动态/敏捷编程语言,在语言的设计上它吸纳了 Python、Ruby 和 Smalltalk 语言的优秀特性,语法非常简练和优美,开发效率也非常高(编程语言的开发效率和性能是相互矛盾的,越高级的编程语言性能越差,因为意味着更多底层的封装,不过开发效率会更高,需结合使用场景做取舍)
全栈工程师修炼指南
2022/09/29
18K0
2.Jenkins进阶之流水线pipeline语法入门学习
Jenkins2 学习系列14 -- 声明式Pipeline补充
如果需要在pipeline中进行逻辑判断或者写Groovy脚本代码,需要写在script步骤中,如下:
mafeifan
2019/07/24
1.7K0
「持续集成实践系列 」Jenkins 2.x 构建CI自动化流水线常见技巧(二)
在上一篇文章中,我们介绍了Jenkins 2.x实现流水线的两种语法,以及在实际工作中该如何选择脚本式语法或声明式语法。原文可查阅:「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要点(一)
测试开发技术
2020/06/05
1.4K0
「持续集成实践系列 」Jenkins 2.x 构建 CI 自动化流水线常见技巧 (二)
在上一篇文章中,我们介绍了Jenkins 2.x实现流水线的两种语法,以及在实际工作中该如何选择脚本式语法或声明式语法。原文可查阅:「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要点(一)
测试开发技术
2020/06/05
1.3K0
「持续集成实践系列 」Jenkins 2.x 构建 CI 自动化流水线常见技巧 (二)
史诗级整理 Jenkins 流水线详解
jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkins 推荐使用声明式流水线。文档只介绍声明流水线。
我的小碗汤
2023/03/19
8K0
史诗级整理 Jenkins 流水线详解
Jenkins中使用pipeline
如同工厂的生产线,每个节点只关注自己的任务,然后流向下一个节点。 我们在编排jenkins时,也可以使用这种思想。
赵云龙龙
2019/09/17
2.8K0
Jenkins中使用pipeline
【Jenkins系列】-Pipeline语法全集
parameters指令提供用户在触发Pipeline时的参数列表。这些参数值通过该params对象可用于Pipeline步骤
DevOps在路上
2023/05/16
2.1K0
【Jenkins系列】-Pipeline语法全集
Jenkins_流水线语法_002
parameters 指令提供了一个用户在触发流水线时应该提供的参数列表。这些用户指定参数的值可通过 params 对象提供给流水线步骤, 了解更多请参考示例。
Cyylog
2020/08/19
1.8K0
【Jenkins系列】什么是pipeline
什么是流水线呢?想象一下,把大象放到冰箱的步骤是啥,第一打开冰箱,第二把大象放进冰箱,第三关闭冰箱,完美!pipeline就是这些步骤的脚本。
用户9913368
2022/08/13
6810
使用Jenkins pipeline流水线构建docker镜像和发布
对于Pipeline, Definition选择 "Pipeline script from SCM".
Ryan-Miao
2019/01/03
6.5K0
pipeline语法_plain词根
本节基于“ 入门指南”中介绍的信息,并应作为参考。有关如何在实际示例中使用Pipeline语法的更多信息,请参阅 本章的Jenkinsfile部分。从Pipeline插件2.5版开始,Pipeline支持两种离散语法,详细说明如下。对于每个的利弊,请参阅语法比较(下文中)。
全栈程序员站长
2022/11/15
2.2K0
Jenkins声明式Declarative Pipeline
指定整个Pipeline或特定阶段是在Jenkins Master节点还是Jenkins Slave节点上运行。可在顶级pipeline块和每个stage块中使用(在顶层pipeline{}中是必须定义的 ,但在阶段Stage中是可选的)
YP小站
2021/12/06
3.6K0
8.Jenkins进阶之工作学习所遇补充
描述: 通常每个项目代码库都会有不同的分支,(如果你没有用多分支流水线的情况下)对于普通的流水线项目我们可以让一条流水线来支持多个分支的发布,其实有时候你会发现每个分支的集成步骤都是差不多的,对于常规的我们可以安装使用git parameter插件,其次还需配置参数化构建过程。
全栈工程师修炼指南
2022/09/29
2K0
8.Jenkins进阶之工作学习所遇补充
7.Jenkins插件安装使用帮助说明
项目描述: Jenkins流水线步骤,提供SSH工具,如命令执行或文件传输,以实现持续交付。 项目地址: https://github.com/jenkinsci/ssh-steps-plugin
全栈工程师修炼指南
2022/09/29
2.1K0
7.Jenkins插件安装使用帮助说明
持续交付-Jenkinsfile 语法
实现 Pipeline 功能的脚本语言叫做 Jenkinsfile,由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录,随项目一起受源代码管理软件控制,无需像创建"自由风格\"项目一样,每次可能需要拷贝很多设置到新项目,提供了一些直接的好处:
霍格沃兹测试开发Muller老师
2022/06/24
7780
软件测试|Jenkins创建Pipeline
近期使用Jenkins帮业务团队搭建过一次Pipline,并将测试流程加入到了Pipline中,将搭建过程的做了简单记录。考虑到项目的保密性,该文章仅演示搭建步骤和工具使用,文中的代码均为伪代码。
霍格沃兹测试开发Muller老师
2023/01/09
1.6K1
Pipeline As Code With Jenkins2.0
Jenkins系列实践文章 Jenkins2.0 Pipeline导入 Pipeline as Code是Jenkins 2.0版本的精华所在,是帮助Jenkins实现从CI到CD华丽转身的关键工具
CodeSheep
2018/05/22
2.2K0
基于Jenkins Pipeline构建企业级CI/CD
本设计通过Jenkins Generic Webhook Trigger 插件实现了基于Webhook自动触发流水线构建。
用户1107783
2024/05/21
2210
基于Jenkins Pipeline构建企业级CI/CD
相关推荐
JenkinsPipeline语法概要
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档