热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jenkins2pipeline常用groovy脚本

jenkins2的核心是pipeline,pipeline的核心是groovy。那有一些基础的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脚本


推荐阅读
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • 六、流程控制语句
    选择结构if只有条件判断结果为真时才执行相应的操作循环结构for、whileuntil反复执行相同操作时,使用循环结构分支结构case根据变量值的匹配结果执行相 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
  • C++基础 | 从C到C++快速过渡
    一、开发环境c++使用的编译器是g& ... [详细]
author-avatar
小曾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有