jenkins - Jenkinsfile 比较两个环境
问题描述
我想比较两个环境并根据结果运行 iff 条件。我试过以下
steps {
script {
if (${BUILD_NUMBER}.toInteger() != ${DEPLOY_BUILD_NUMBER}.toInteger()) {
echo "DEPLOY_BUILD_NUMBER not equal to BUILD_NUMBER."
sh "exit 1"
}
}
.....
}
但因以下错误而失败
java.lang.NoSuchMethodError: No such DSL method '$' found among steps
这样做的正确方法是什么?
解决方案
[免责声明:未经实际测试。]
在这里,我们有一个带有引用局部变量的占位符的字符串:
def name = 'Guillaume' // a plain string def greeting = "Hello ${name}" assert greeting.toString() == 'Hello Guillaume'
所以,鉴于groovy.lang.GString
:
java.lang.String
如果没有插值表达式,双引号字符串是普通的,但groovy.lang.GString
如果存在插值,则为实例。
支持toInteger()
这应该适合你:
...
if ("${BUILD_NUMBER}".toInteger() != "${DEPLOY_BUILD_NUMBER}".toInteger()) {
...
但显然它没有,所以只需比较字符串(并可能在之前修剪它们)。
PS:只是出于好奇:你从哪里得到<local variable>.toInteger()
的?
推荐阅读
- laravel - Laravel 唯一验证规则忽略数组传入数据
- php - 我需要从 SQL 数据到 PHP
- pymssql - Python sql 数据库 MSSQLDatabaseException
- python - Pandas to_csv 正在删除逗号
- swift - 创建一个全局计时器以在后台快速运行
- python - 如何使字母大写
- amazon-web-services - 使用减少的 EBS 存储创建现有 EC2 实例的 AMI
- java - 从后面的Java开始提取3的子串
- hazelcast - HazelcastSerializationException:读取 DataSerializable 时出现问题,命名空间:0,id:0
- testing - JMeter如何在另一个页面打开时测试页面加载性能