Jenkins(四)

文件目录相关操作

  • deleteDir:删除当前目录
  • dir:切换到目录
  • 默认流水线工作在工作空间目录下,dir步骤可以让我们切换到其他目录 dir('/tmp'){ deleteDir() }
  • fileExists:判断文件是否存在,结果返回布尔值
  • isUnix:判断是非为UNIX系统,如果是则返回true
  • pwd:返回当前所在目录
  • 有一个布尔类型的可选参数tmp,如果为true,则返回与当前工作空间关联的临时目录
  • writeFile:将内容写入指定文件中
  • file:文件路径,可以是绝对路径,也可以是相对路径
  • text:要写入的文件内容
  • encoding:目标文件的编码。如果为空,则使用操作系统默认的编码
  • readFile:读取文件
  • file:路径,同上
  • encoding:编码,同上
script{
   writeFile(file:"base64File", text:"amVua2lucyBib29r", encoding:"Base64")
   def content = readFile(file:"base64File", encoding: "UTF-8")
   echo "${content}"
}

修改Jenkinsfile

执行结果

amVua2lucyBib29rjenkins book的Base64编码

转码

制品相关步骤

  • stash:保存临时文件

将文件保存起来,以便同一次构建的其他步骤或阶段使用。 如果整个流水线在同一台机器上执行,那stash是多余的,一般用于跨Jenkins node使用。 stash步骤会将文件存储在tar文件中,对于大文件的stash操作会消耗Jenkins master的计算资源。

  • name:字符串类型,保存文件的集合的唯一标识
  • allowEmpty:布尔类型,允许stash内容为空
  • excludes:字符串类型,排除文件,如果排除多个使用「逗号」分隔
  • includes:字符串类型,stash文件,留空表示全部
  • useDefaultExcludes:布尔类型,true:使用Ant风格路径默认排除文件 Ant风格 匹配任何单字符匹配项目根路径下所有在project路径下的.a文件最长匹配原则: /project/dir/file.jsp,现在存在两个路径匹配模式 /**/*.jsp/project/dir/*.jsp 那么会根据模式/project/dir/*.jsp来匹配
  • unstash:取出之前stash的文件 pipeline { agent none stages { stage('stash') { agent {label "master"} steps { writeFile file: "a.txt",text: " stash(name: "abc", includes: "a.txt") } } stage('unstash') { agent {label "node2"} steps { script { unstash("abc") def content = readFile("a.txt") echo "${content}" } } } } }

命令相关

  • sh:执行shell命令
  • script:要执行的shell脚本
  • encoding:脚本执行后输出日志的编码,默认为系统编码
  • returnStatus:布尔类型,默认返回状态码,如果是非零则流水线执行失败。设置为true后,无论什么状态码,流水线执行都不受影响
  • returnStdout:布尔类型,如果为true,任务的标准输出将作为步骤的返回值,而不是打印到构建日志中(如果有错误,则依旧会打印到日志中) ⚠️returnStatus和returnStdout同时使用,只有returnStatus生效
  • bat,powershell步骤
  • bat步骤执行Windows的批处理命令
    • 支持参数类型sh
  • powershell执行的是PowerShell脚本
    • 支持参数类似sh

其他步骤

  • error:主动报错,中止pipeline
  • error(“there is a error”)
  • tool:使用预定义的工具
  • name:工具名称
  • type(可选):工具类型,指该工具安装类的全路径类名
  • 在Global Tool Configuration(全局工具配置)中配置了工具

全局工具配置

片段生成器

  • timeout:代码块超时时间
  • time:整型
  • unit(可选):时间单位,默认分钟。支持NANOSECONDS,MICROSECONDS,MILLISECONDS,SECONDS,MINUTES(默认),HOURS,DAYS
  • activity(可选):布尔类型,true时 只有当日志没活动才算真正的超时
  • waitUntil:等待条件满足 timeout(50) { waitUntil{ script{ def r = sh script: 'curl http://exmple',return Status: true return (r == 0) } } }
  • retry:重复执行块 steps { retry(20){ script{ sh script: 'curl http://exmple',return Status: true } } } ⚠️如果某次retry抛出异常,只中止当次,不会中止整个retry的执行 在执行retry的过程中,用户是无法中止流水线的
  • sleep:休眠一段时间
  • time:整型,休眠时间
  • unit(可选):时间单位,默认秒,与timeout类似
  • 示例:sleep(120) // 休眠120秒sleep(time:'2',unit:"MINUTES") // 休眠2分钟

编写Jenkinsfile

推荐VS Code扩展:Jenkins Pipeline Linter Connector

  1. 安装
  2. 配置扩展,照着提示配就行了
  3. 配置Jenkins服务器
  4. 运行

Jenkins Pipeline Linter Connector

配置插件

配置CSRF

运行校验

故意写错了进行校验:

错误进行校验

Errors encountered validating Jenkinsfile:
WorkflowScript: 14: unexpected token: } @ line 14, column 1.
   }
   ^

本文分享自微信公众号 - 测试游记(zx94_11),作者:zx钟

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python基础-装饰器笔记

    函数装饰器用于在源码中“标记”函数,以某种方式增加函数的行为。这是一项强大的功能,但是若想要掌握,必须理解闭包。

    zx钟
  • 测试开发进阶(二十三)

    「Tutorials」入门:https://docs.djangoproject.com/en/2.2/intro/

    zx钟
  • 测试开发进阶(二十)

    Django makes it easier to build better Web apps more quickly and with less code.

    zx钟
  • HashMap和Hashtable的区别

    public class Hashtable extends Dictionary implements Map

    休辞醉倒
  • Vue-CLI 项目在pycharm中配置

    小小咸鱼YwY
  • SAP CRM,C4C和Hybris的product Cockpit

    (1) Product Model in CRM part1 - basic introduction (2) Product Model in CRM pa...

    Jerry Wang
  • 19-3-13Python中的函数

    GhostCN_Z
  • 在silverlight中利用socket发送图片或文件

    silverlight中的socket通讯支持,让sl开发基于web的聊天工具成为了可能,后来OpenFileDialog,SaveFileDialog的出现,...

    菩提树下的杨过
  • 使用ReactHook和context实现登录状态的共享

    使用react hook 和应用上下文context进行一个自定义的hook的开发。

    我已经洗完澡了
  • 运动想象系统的原理以及常见的特征提取算法和分类算法

    Rose小哥今天给大家介绍一些运动想象系统的原理以及运动想象系统中常见的特征提取算法和分类算法。

    脑机接口社区

扫码关注云+社区

领取腾讯云代金券