jenkins2 -pipeline 經常使用groovy腳本

jenkins2的核心是pipeline,pipeline的核心是groovy。java

那有一些基礎的groovy是必須常常使用的,如變量賦值,變量引用,打印變量,輸出字符,任務調用,循環判斷等。dom

 

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關鍵字。blog

 

      final關鍵字依然做爲常量標識,這一點和Java相同。ip

      最後注意一點,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類型)ci

      對於基本算術運算符,Groovy增長了**運算符,表示求冪,x ** y表示求x的y次方;字符串

分支結構語句input

  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;
相關文章
相關標籤/搜索