在詹金斯管道脚本中使用 groovy 比较两个整数

compare two integers using groovy in jenkins pipeline script

我正在尝试使用 groovy 比较 jenkins 脚本中的两个整数。我每次都得到不同的回应。我的疑问是如何将字符串转换为整数然后比较它然后产生所需的输出。 我的脚本如下所示:

pipeline {
agent any
stages {
    stage('checkout') {
        steps {
            script{
                dec1='5.11.03'
                dec2='5.9.06'
                a=dec1.split("\.")[1]
                b=dec2.split("\.")[1]
                c='10'
                one="$a" as Integer
                two="$b" as Integer
                three="$c" as Integer 
                println("$one")
                println("$two")
                println("$one".compareTo(10))
                println("$two".compareTo(10))
                list1 = ("$one" >= "$three") ? 'total 7 repos' : 'total 4 repos'
                list2 = ("$two" >= "$three") ? 'total 7 repos': 'total 4 repos'
                println("the result for $dec1 is $list1")
                println("the result for $dec2 is $list2")
            }
        }
    }    
}

}

我在这里尝试比较十进制数字的第二部分并检查它是否大于 10。如果大于 10,则必须打印 'total 7 repos' 或打印 'total 4 repos'。我也尝试过使用产生不同结果的 compareTo() 。谁能帮我解决这个问题。提前致谢。 我得到的输出是:

11
[Pipeline] echo
9
[Pipeline] echo
1
[Pipeline] echo
8
[Pipeline] echo
the result for 5.11.03 is total 7 repos
[Pipeline] echo
the result for 5.9.06 is total 7 repos

这里的问题是您在变量周围使用了引号和 $ 符号,但这是不正确的语法。 Groovy 遵循 Java-like 语法,您可以在此处查看有关 Groovy 变量的文档: https://groovy-lang.org/semantics.html#_variable_assignment

基本上,您的 "" 和 $ 就是问题所在。

将第 11-14 行切换为:

println(one.compareTo(10))
println(two.compareTo(10))
list1 = (one >= three) ? 'total 7 repos' : 'total 4 repos'
list2 = (two >= three) ? 'total 7 repos': 'total 4 repos'

应该可以解决问题。