zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    Java实现 LeetCode 474 一和零
    Java实现 LeetCode 474 一和零
    Java实现 LeetCode 473 火柴拼正方形
    Java实现 LeetCode 473 火柴拼正方形
    Java实现 LeetCode 473 火柴拼正方形
    Java实现 LeetCode 472 连接词
    Java实现 LeetCode 472 连接词
    df 和 du 命令详解
    如何使用UDP进行跨网段广播
    从linux启动到rootfs的挂载分析
  • 原文地址:https://www.cnblogs.com/YatHo/p/6780806.html
Copyright © 2011-2022 走看看