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脚本的更多相关文章

  1. jenkins2 pipeline高级

    jenkins2 pipeline里groovy的高级用法.翻译自:https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL. ...

  2. jenkins2 groovy脚本参考

    使用plugin生成groovy脚本,或者参考已有的groovy脚本. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.co ...

  3. jenkins2 pipeline介绍

    文章来自:http://www.ciandcd.com 文中的代码来自可以从github下载: https://github.com/ciandcd   什么是jenkins2的pipeline?   ...

  4. jenkins2 pipeline 语法快速参考

    jenkins2 pipeline中常用的语法快速参考. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciand ...

  5. jenkins2 pipeline插件的10个最佳实践

    jenkins pipeline的10个最佳实践. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...

  6. jenkins2 pipeline入门

    本文通过简单的pipeline的实例和详细的讲解,能够学习基本pipeline的groovy用法,然后开始实现自己的pipeline job. 翻译和修改自:https://github.com/je ...

  7. JAVA嵌入运行Groovy脚本

    摘自: http://shift-alt-ctrl.iteye.com/blog/1938238 . 最近设计一个数据统计系统,系统中上百种数据统计维度,而且这些数据统计的指标可能随时会调整.如果基于 ...

  8. soapUI系列之—-02 Groovy脚本常用方法

    ------Groovy脚本常用方法 1. 设置参数值:setPropertyValuea. 设置 project level property//set to project level prope ...

  9. Groovy脚本基础全攻略

    1 背景 Groovy脚本基于Java且拓展了Java,所以从某种程度来说掌握Java是学习Groovy的前提,故本文适用于不熟悉Groovy却想快速得到Groovy核心基础干货的Java开发者(注意 ...

随机推荐

  1. 每天一个JS 小demo之韩雪冬轮播图。主要知识点:html,css布局,对于数组和对象的理解和运用

    @charset "utf-8"; /* CSS Document */ ;; } li { list-style: none; } img { border: none; } b ...

  2. Pycon 2017: Python可视化库大全

    本文首发于微信公众号“Python数据之道” 前言 本文主要摘录自 pycon 2017大会的一个演讲,同时结合自己的一些理解. pycon 2017的相关演讲主题是“The Python Visua ...

  3. css简单了解

    今天主要是说一下css样式表!HTML结合他使用可以是HTML页面变得很绚丽多彩! 先简单介绍一下为什么要使用CSS(Cascading Style Sheets)层叠样式表! 1.因为CSS样式表可 ...

  4. 常用SHELL命令

    1.查看版本号cat /proc/version; uname -a; uname -r 2.查看用户组cat /etc/group 3.查看当前用户组 groups 4.查看当前用户 whoami ...

  5. ecshop图片上传JPEG格式失败问题

    在根目录下找到includes文件目录,在其目录中找到cls_image.php打开并找到: $allow_file_types = '|GIF|JPG|JEPG|PNG|BMP|SWF|'; 此处J ...

  6. Codewars练习笔记·1 - 6.23

    Codewars地址:https://www.codewars.com/ 笔记资料来源:JavaScript高级程序设计. 欢迎和大家一起来讨论~   基础练习(1):   我的解答为: class ...

  7. MySql三大范式与数据库设计和表创建常用语句

    [数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: ...

  8. 搭建phabricator代码审核工具

    phabricator 依赖环境 系统centos,mysql,php,nginx 1.下载安装脚本 https://secure.phabricator.com/source/phabricator ...

  9. scanner--inputstreamreader--console对比

    1 JDK 1.4 及以下版本读取的方法 JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使用System.in获得系统的输入流,再桥接至字符流从字符流中读入数据.示例代码如下: ...

  10. el表达式字符串使用总结

    el表达式截取 逗号后面的字符串${fn:substringAfter(strVar,',' )} el表达式判断字段长度<c:if test="${fn:length(strVar) ...