本篇继续学习Declarative Pipeline的相关指令,本篇学习三个指令,分别是触发器(triggers),stage和tool。触发器主要是方便周期控制自动化提交,stage是在stages{...}下的一个指令,我们平台的大部分代码都在stage内完成,tool主要就是为了三大工具(jdk, gradle,maven)提供环境变量服务的。

指令1:triggers

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

这个triggers是触发器的意思,所以这块是设置什么条件下触发pipeline代码执行,以及触发的频率。看到这里,如果你学习过Jenkins UI功能部分,你应该记得有下面这个图,用来控制轮询频率的,特别适合周期的自动化提交。

这篇介绍的触发器知识点就和这个有关。先记住这个点,在一个pipeline{…}代码中,只运行出现一次triggers{…},而且这个指令不是必须存在的。

cron

接受一个cron风格的字符串来定义Pipeline应重新触发的常规间隔,例如: triggers { cron('H 4/* 0 0 1-5') }

pollSCM

接受一个cron风格的字符串来定义Jenkins应该检查新的源更改的常规间隔。如果存在新的更改,则Pipeline将被重新触发。例如:triggers { pollSCM('H 4/* 0 0 1-5') }

upstream

接受逗号分隔的作业字符串和阈值。 当字符串中的任何作业以最小阈值结束时,将重新触发pipeline。例如:triggers { upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS) }

举例一个可能利用scm的场景,如果一个公司做到了很好的代码覆盖测试,一般都会,如果监控到有人提交代码,就会自动化触发启动相关的单元测试。这个场景就是适合在pipeline代码里使用triggers指令,下面代码举例一个pollSCM的基本使用。

pipeline {agent anytriggers {pollSCM (‘H H(9-16)/2 * * 1-5)’)}stages {stage('Example') {steps {echo 'Hello World'}}}
}

解释下“H H(9-16)/2 * * 1-5)”的含义,这个你可以在上面截图这个页面点击右侧这个问号,出来具体含义。第一步,先根据空格,把字符串切割成5段。这5部分在下面这张图有解释。

所以,H H(9-16)/2 * * 1-5) 的含义就是:

第一部分“H” 表示hash,记住不是表示hour,是一个散列值,含义就是在一个小时之内,会执行一次,但是这次是一个散列值,而且不会并发执行。

第二部分“H(9-16)/2”,表示白天在早上9点到下午5点,每间隔2小时执行一次。

第三部分“*“,每天执行

第四部分“*“表示每月执行

第五部分“1-5“ 表示周一到周五执行

所以上面这个表达式“H H(9-16)/2 * * 1-5) “的含义就是,在每个月的周一到周五的白天,从早上9点到下午5点,每间隔两个小时去触发一次自动化构建。 这个就比较适合,我们每天上班,间隔两个小时去跑一次单元自动化测试。间隔时间长短,取决服务器压力和业务具体场景。

指令2:stage

该stage指令在该stages部分中,应包含步骤部分,可选agent部分或其他特定于阶段的指令。实际上,Pipeline完成的所有实际工作都将包含在一个或多个stage指令中。

特点:stage一定是在stages{…}里面,一个pipeline{…}中至少有一个stages{…}和一个stage{…}.这里多说一句,一个stage{…}中至少有一个steps{…}。Stage{…}还有一个特点就是,里面有一个强制的字符串参数,这个字符串参数就是描述这个stage是干嘛的,这个字符串参数是不支持变量的,只能你自己取名一个描述字段。

代码举例:

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

指令3:tool

定义自动安装和放置工具的部分PATH。如果agent none指定,这将被忽略。

特点:

只支持定义maven jdk gradle三种工具的环境变量。

代码举例:

pipeline {agent anytools {jdk 'jdk8' }stages {stage('Example') {steps {sh 'java -version'}}}
}

注意:工具名称必须在Jenkins 管理Jenkins → 全局工具配置中配置。例如,上面代码我写了jdk,那么我必须在jenkins管理的全局工具配置中有jdk配置。

Jenkins高级篇之Pipeline语法篇-7-Declarative Pipeline指令:triggers/stage/tool相关推荐

  1. 18-Jenkisn-Pipelin-声明式流水线语法-triggers/stage/tool

    目录 前言 triggers stage tool 脚本示例 前言 本篇继续学习新的指令triggers/stage/tool triggers 指令定义了流水线被重新触发的自动化方法,当前可用的触发 ...

  2. Jenkins高级篇之Pipeline语法篇-2-第一个Pipeline脚本练习

    前面一篇,介绍了什么是Pipeline,和Pipeline的基本概念,和几个关键字的基本含义的介绍,真正的涉及到Pipeline的语法还没有开始介绍.这篇先来介绍第一个Pipeline代码,分别用两种 ...

  3. Jenkins高级篇之Pipeline技巧篇-1-小白搭建Pipeline项目开发环境

    之前,有人和我说,pipeline教程这里,关于如何创建pipeline的git项目和,如何在jenkins上做pipeline的测试这块,在前面文章交代不清楚.这里我补上一篇,通过这一篇,小白也能开 ...

  4. Postgresql学习笔记-高级语法篇

    Postgresql学习笔记-高级语法篇 Postgresql 约束 Postgresql约束用于规定表中的数据规则. 如果存在违反约束的数据行为,行为会被约束终止. 约束可以在创建表的时候就规定(通 ...

  5. Jenkins Pipeline 语法

    目录 声明性pipeline Sections agent pipeline与stage中的不同 参数 常用选项 发布 post stages steps Directives environment ...

  6. FPGA笔记之verilog语言(基础语法篇)

    文章目录 FPGA笔记之verilog语言(基础语法篇) 1. verilog 的基础结构 1.1 verilog设计的基本单元--module 1.2 module的使用 1.3 I/O的说明 1. ...

  7. Linux开发者的CI/CD(3)jenkins pipeline语法学习

    备注:由于我不是专职的devops工程师,所以学习jenkins本着够用的原则即可.但作为一个高级软件工程师,学会写pipeline是必须的. pipeline翻译成流水线,在Unix/Linux系统 ...

  8. Flutter开发指南之理论篇:Dart语法04(库,异步,正则表达式)

    总目录 Flutter开发指南之理论篇:Dart语法01(数据类型,变量,函数) Flutter开发指南之理论篇:Dart语法02(运算符,循环,异常) Flutter开发指南之理论篇:Dart语法0 ...

  9. Xamarin XAML语言教程基础语法篇大学霸

    Xamarin XAML语言教程基础语法篇大学霸 前  言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框 ...

最新文章

  1. ubuntu php7 memcache,linux ubuntu下安装php memcache扩展
  2. Microsoft Azure Site Recovery (1) 安装VMM服务器代理
  3. 桌面云实验环境的部署配置
  4. ARP***绑定 linux/windows 下解决方案
  5. Java命令行界面(第25部分):JCommando
  6. C# 动态创建数据库三(MySQL)
  7. oracle set autocommit,Oracle Sqlplus SET AUTOCOMMIT
  8. php省城联动_thinkPHP实现的省市区三级联动功能示例
  9. OpManager-企业网络问题分析及故障排除
  10. 使用PaddlePaddle轻松实现语音合成
  11. 快速入门 | 篇十九:正运动技术运动控制器多轴同步与电子凸轮指令简介
  12. java裂变_微信现金红包单一红包、裂变红包(Java版)
  13. 【归档】Kata Containers 2.0 介绍
  14. Office 2016 Pro Plus \ Project 专业版 \ Visio 专业版 \ 64 位vol版本方便KMS小马oem
  15. UVA 10306 e-Coins(二维完全背包)
  16. 云原生Java架构师——KubeSphere DevOps流水线部署RuoyiCloud
  17. 初识pyQt5之简易翻译软件
  18. oracle计算两个日期相隔月数,计算日期相差
  19. c++裸函数naked解析
  20. 身体语言密码_“我根本不知道她到底想要什么”,《身体语言密码》告诉你

热门文章

  1. razer鼠标测试软件,驱动软实力对比测试_Razer 炼狱蝰蛇2013鼠标_键鼠评测-中关村在线...
  2. 03前端第三章Javascript
  3. 三种平摊分析的方法分别为_关于平摊分析、表的扩增、势能分析初步理解
  4. java:字符和字节区别
  5. Cloud Programming Simplified: A Berkeley View on Serverless Computing
  6. tf.repeat(), Tensorflow2.1.0以上
  7. C++多态的好处和作用(用实例说话)
  8. 【Android 10 源码】healthd 模块 BatteryService 初始化
  9. 护卫神mysql初始密码_护卫神MySQL密码重置器(MySQL密码重置工具)V1.3 最新免费版...
  10. python unicode 标点范围_Unicode 编码 范围