1.基础框架
2.系统配置
3.Pipeline语法
Pipeline遵循着Groovy的基本语法,相比Java而言,Groovy语法有如下的一些特性:
- 没有分号作为语句分隔符,每个声明必须在自己的一行
- return关键字可省略, 方法的最后一句表达式可作为返回值返回 (视具体情况使用, 避免降低可读性)
- 类的默认作用域是public
- def关键字定义的变量类型都是Object, 任何变量, 方法都能用def定义/声明 , 在 Groovy 中 “一切都是对象 "
3.1定义方法
/**
* 描述:截取字符串中的数字
* 返回:
* */
def getNumber(str){
if("" != str){
def regEx="[^0-9]"
def p = java.util.regex.Pattern.compile(regEx)
def m = p.matcher(str)
def result_num = m.replaceAll("").trim()
echo "result_num is ${result_num}"
return result_num
}else{
echo "input string is null"
}
}
3.2定义变量
Groovy遵循“一切皆对象”的思路,下面为了方便大家理解,可能会出现以字符串、数组、Map等Java中的变量类型给大家介绍
环境变量
def gerrit_project="${GERRIT_PROJECT}"
其他环境变量见:[https://wiki.jenkins.io/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables]
局部变量
申明变量:def username
初始化变量:def username="alex"
3.3字符串的定义与使用
最常用的是用双引号初始化字符串,双引号里的内容可扩展
def sum = "the sum of 2 and 3 equals ${2 + 3}"
单引号定义的字符串内容不可扩展,类似于Java中的String
def username = 'alex'
还有一种特殊的方式,三个双引号定义的字符串,三个单引号定义的是有格式的字符串,会直接按照我们写的格式进行输出,而不用像java中进行拼接
def trebleStr = '''line one
line two
line three '''
获取子字符串:
def level1_project = "${GERRIT_PROJECT}".substring(0, "${GERRIT_PROJECT}".lastIndexOf("/"))
字符串替换:
def UserName = readFile encoding: 'UTF-8', file: 'whoami.txt'
UserName = UserName.replaceAll("\n","").replaceAll(" ","")
大小写转换:
def username = "alex".toUpperCase()
def realname = "ALEX".toLowerCase()
字符串连接
def imageTag="${imageVersion}"+"_"+"${now}"
3.4数组和对象的使用
通过index获取数组中的元素
line_cover_rate=jacoco_result.split(",")[0]
通过key获取map中的value
def magic_value = sonarResult['magic_value']
3.5逻辑控制
if/else,和java中的用法基本一致
if (!sonar_status){
error "Sonar质量门没通过"
} else {
echo "通过质量门"
}
for循环
def sum = 0
for (i in 0..9) {
sum += i
}
while循环,和java用法基本一致
def sum = 0
while(sum<10){
println sum++
}
3.6时间函数
Date start = new Date()
def createTime = start.format('yyyy-MM-dd HH:mm:ss')
def start_time = start.getTime()
4.应用