jenkins2 -pipeline 常用groovy脚本
jenkins2的核心是pipeline,pipeline的核心是groovy。
那有一些基础的groovy是必须经常使用的,如变量赋值,变量引用,打印变量,输出字符,任务调用,循环判断等。
Groovy变量
注意:在jenkins里面配置Groovy变量时,注意进行测试,不要同Groovy自带的变量冲突!!!
既然是脚本语言,Groovy的变量也被设计成为了类似的弱类型,实际上Groovy同时支持强类型变量和“弱”类型变量,强类型变量拥有自己的类型,而“弱”类型变量则全部会被编译为Object类型,从代码的角度上,Groovy的变量无需声明类型了:
// groovy可以使用类型确定的变量或常量 String s1 = "Hello "
print s1 final String s2 = "World"
println s2 // 利用def关键字可以定义可变类型的变量或常量 def s3 = "Welcome "
print s3 // 对于可变类型,即随时可以改变其类型,赋予不同的量 s3 = 123 // 此时str3被赋予了整型量,所以其类型变为Integer类型
println s3 s3 += 100 // 整型的str3和整型相加,结果是整型223
println s3 s3 = true // str3目前是boolean类型
println ("Ok " + s3) // 对于局部变量,甚至可以不使用def关键字来定义
s4 = "Good job"
println s4 // 对于数值类型,有如下规则 int n1 = 10
n2 = n1 / 3
println n2 // 对于n1为整数时, 10 / 3的结果并不是整数,这说明常量n2并不是整数 int n3 = n1 / 3 // 明确定义n3为整数后,相除的结果为整数
println n3 n2 = n1.intdiv(3)
println n2 // intdiv用于进行整除 n2 = n1.power(2) // 求平方 groovy方法
println n2 n2 = n1 ** 2 // 求平方的groovy语法
println n2 n1 = Math.sqrt(n2) // 求开方 java方法
println n1
从上面的代码可以看到,Groovy支持有类型的变量,例如String s;也支持无类型的变量,例如def s,相当于Java中的Object s;对于无类型的变量,甚至可以不写def关键字。
final关键字依然作为常量标识,这一点和Java相同。
最后注意一点,Groovy中没有Java中的值类型简单对象,所有的对象都是引用类型对象,例如定义def n = 10,n的类型应该是Integer类型而不是int类型;即便定义了int n = 100,n的类型依然是Integer类型;如果定义了def n = 12.34,则注意,n的类型是BigDecimal类型而不是Double类型,只有显式定义double n = 12.34,n的类型才明确为Double类型(依旧不是double类型)
对于基本算术运算符,Groovy增加了**运算符,表示求幂,x ** y表示求x的y次方;
分支结构语句
Groovy的结构化语句仍旧是三种:顺序结构、分支结构和循环结构,其中分支结构和循环结构增加了很多意想不到的功能,先看分支结构:
// groovy中if条件分支的新规定 // groovy中,非0的数值可以表示true
int num = 0
if (num) {
println "True"
} else {
println "False"
} println (++num ? "True" : "False") if (!!num) { // !!运算符可以将num转化为boolean类型
println "num=${num}为${!!num}"
}
println "" // 引用为null时,表示false
Object o = null
if (o) {
println "True"
} else {
println "False"
}
o = new Date()
if (o) {
println "True"
} else {
println "False"
}
println "" // 字符串为""时,表示false
String s = ""
if (s) {
println "True"
} else {
println "False"
}
s += "hello"
if (s) {
println "True"
} else {
println "False"
}
println "" // 集合为空时,表示False
ArrayList array = new ArrayList()
if (array) {
println "True"
} else {
println "False"
}
array.add(100)
if (array) {
println "True"
} else {
println "False"
}
println "" // groovy中switch选择分支的新规定 // switch对字符串类型的支持 print "Please input your words: "
s = new BufferedReader(new InputStreamReader(System.in)).readLine() switch (s) {
case "how are you":
println "fine, thank you"
break;
case "how do you do":
println "how do you do too"
break;
default:
println "nice to meet you"
} // switch对集合和范围的支持
n = new Random().nextInt(101)
print "you got ${n} point, "
switch (n) {
case [98, 99, 100]: // n为98, 99, 100这三个数字时
println "very good!!"
break;
case 90 .. 97: // n为90-97之间时
println "nice job!!"
break;
case 70 .. 89: // n为70-89之间时
println "good"
break;
case 60 .. 79: // n为60-79之间时
println "can be better"
break;
case {it > 0 && it < 60}: // n比0大且比60小时
println "too bad"
break;
case 0: // n为0时
println "nothing to say"
break;
}
首先,Groovy对boolean类型放宽了限制:
- 常量true和false分别表示“真”和“假”;
- null表示false,非null表示true;
- 空字符串""表示false,非空字符串表示true;
- 0表示false,非0表示true;
- 空集合表示false,非空集合表示true;
jenkins2 -pipeline 常用groovy脚本的更多相关文章
- jenkins2 pipeline高级
jenkins2 pipeline里groovy的高级用法.翻译自:https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL. ...
- jenkins2 groovy脚本参考
使用plugin生成groovy脚本,或者参考已有的groovy脚本. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.co ...
- jenkins2 pipeline介绍
文章来自:http://www.ciandcd.com 文中的代码来自可以从github下载: https://github.com/ciandcd 什么是jenkins2的pipeline? ...
- jenkins2 pipeline 语法快速参考
jenkins2 pipeline中常用的语法快速参考. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciand ...
- jenkins2 pipeline插件的10个最佳实践
jenkins pipeline的10个最佳实践. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...
- jenkins2 pipeline入门
本文通过简单的pipeline的实例和详细的讲解,能够学习基本pipeline的groovy用法,然后开始实现自己的pipeline job. 翻译和修改自:https://github.com/je ...
- JAVA嵌入运行Groovy脚本
摘自: http://shift-alt-ctrl.iteye.com/blog/1938238 . 最近设计一个数据统计系统,系统中上百种数据统计维度,而且这些数据统计的指标可能随时会调整.如果基于 ...
- soapUI系列之—-02 Groovy脚本常用方法
------Groovy脚本常用方法 1. 设置参数值:setPropertyValuea. 设置 project level property//set to project level prope ...
- Groovy脚本基础全攻略
1 背景 Groovy脚本基于Java且拓展了Java,所以从某种程度来说掌握Java是学习Groovy的前提,故本文适用于不熟悉Groovy却想快速得到Groovy核心基础干货的Java开发者(注意 ...
随机推荐
- 数据库数据对比自动生成sql
1.故事背景 有一次迭代步入尾声,提交给用户测试,系统管理员在测试环境中初始了一些数据,然后在上线的时候系统管理员再去正式环境初始这一些数据,然而这次数据太多了,说了一次:”为什么要初始化两次?“ 你 ...
- java基础(四章)
一. switch结构(开关语句)的语法 switch(表达式 ){ ------- [dream1]类型为int.char case 常量1 : ---------[ ...
- msf 之 webshell 提权
首先建议一下到网上查查meterpreter的用法在看这篇文章,理解为什么要使用msf来提权(因为msf里边有个meterpreter很强大 ^_^)Metasploit 拥有msfpayload 和 ...
- github pages部署静态网页
如果你的项目只是一个静态网站,就没有必要再去整什么服务器,github pages 提供了搭建静态网站的功能: 为什么使用Github Pages 1. 搭建简单而且免费: 2. 支持静态脚本: 3. ...
- getElementById和querySelector方法的区别
"querySelector 属于 W3C 中的 Selectors API 规范 .而 getElementsBy 系列则属于 W3C 的 DOM 规范" 1.区别 getXXX ...
- 在vue 中使用Stylus
概述 什么是Stylus Stylus是一个CSS预处理器. 什么是CSS预处理器 关于CSS预处理器,推荐先行阅读这篇文章:为您详细比较三个 CSS 预处理器(框架):Sass.LESS 和 Sty ...
- scanner--inputstreamreader--console对比
1 JDK 1.4 及以下版本读取的方法 JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使用System.in获得系统的输入流,再桥接至字符流从字符流中读入数据.示例代码如下: ...
- java 抛出异常
这种方式serviceImpl 方法不用throws异常,比较方便 if(count>0){ //或者 IllegalArgumentException java的 throw new Ille ...
- Structured-Streaming之窗口操作
Structured Streaming 之窗口事件时间聚合操作 Spark Streaming 中 Exactly Once 指的是: 每条数据从输入源传递到 Spark 应用程序 Exactly ...
- 【LeetCode】327. Count of Range Sum
题目: Given an integer array nums, return the number of range sums that lie in [lower, upper] inclusiv ...