Сравнить два целых числа, используя скрипт конвейера groovy в jenkins

Я пытаюсь сравнить два целых числа в сценарии jenkins, используя groovy. Каждый раз получаю разные ответы. Я сомневаюсь, как преобразовать строку в целое число, затем сравнить ее и затем получить желаемый результат. мой скрипт выглядит так:

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, она должна напечатать «всего 7 репозиториев» или напечатать «всего 4 репозитория». Я также пытался использовать 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
one — целое число, а "$one" — gstring. Избегайте использования "$xyz", и ваш код должен работать.
daggett 03.04.2022 23:52
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
1
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема здесь в том, что вы используете кавычки и символы $ вокруг ваших переменных, но это неправильный синтаксис. Groovy следует синтаксису, подобному Java, и вы можете проверить документ здесь, посвященный переменным 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'

Должно решить проблему.

@MB да, изменение кода, как вы упомянули, дало идеальный результат ... Большое спасибо за ваш подробный ответ ...

Minu 04.04.2022 08:57

Другие вопросы по теме