从詹金斯“sh”到 groovy

时间:2021-03-24 11:55:10

标签: jenkins groovy jenkins-groovy

有没有办法用 groovy 重写这个带有 Stdout: true 等的 jenkins 变量?

def result = sh(returnStdout: true, script: "echo \"$changeString\" | grep -o 'DPDHLPA-[0-9][0-9]*' | sort | uniq").trim()

这个grep怎么能复制呢? echo 和 sort 对我来说是可以理解的,但是 grep 和 uniq 呢?

changeString 的输出示例:

[DPDHLPA-26488] Added data-reset-state attribute for smart grid and smart filter

1 个答案:

答案 0 :(得分:0)

def changeString = """
[DPDHLPA-26488] ddd
[DPDHLPA-26488] aaa
[DPDHLPA-26488] bbb
[DPDHLPA-26488] aaa
[DPDHLPA-26489] ccc
[DPDHLPA-26488] ddd
"""

def result = changeString.readLines()
    .collect{it=~/(DPDHLPA-[0-9]+)/}.findAll()
    .collect{it[0][0]}.unique().sort().join('\n')

使用 List/Collection/Iterable 的方法:

http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/List.html