当前位置: 首页 > 面试题库 >

如何在Jenkinsfile中将字符串转换为整数?

尉迟默
2023-03-14
问题内容

我的Jenkinsfile中有以下内容:

pipeline {
    agent none
    environment {
        timeout_mins = 1
    }
    options {
        timeout(time: "${env.timeout_mins}", unit: 'MINUTES')
    }
    stages {
        stage("test print") {
            steps {
                echo "timeout_mins: ${env.timeout_mins}"
                sh "sleep 120"
            }
        }
    }
}

我想在多个地方重用诸如timeout_mins之类的环境参数,但是对于某些插件,需要在某些地方将其转换为整数。我在上面的示例中遇到的错误如下:

org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty
java.lang.IllegalArgumentException的处理环境:无法为TimeoutStep实例化{time = null,unit =
MINUTES}(时间:int,unit ?: TimeUnit [NANOSECONDS,MICROSECONDS,
[MILLISECONDS,SECONDS,MINUTES,HOURS,DAYS]):java.lang.ClassCastException:org.jenkinsci.plugins.workflow.steps.TimeoutStep.time需要int,但在org.jenkinsci.plugins.structs上收到了java.lang.String类。
org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.org)上的describable.DescribableModel.instantiate(DescribableModel.java:264)在org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:194)在org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL。
org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126)上的org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)在org.codehaus.groovy上的org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)在org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)位于com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:18)的.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)

在Jenkinsfile中,有人可以将String转换为int吗?

我试过了 time: env.timeout_mins,但这产生了一个空值。

time: ${env.timeout_mins},产生:WorkflowScript:7:方法调用参数@第7行,第23列,超时(时间:$
{env.timeout_mins},单位:“ MINUTES”)

time: ${env.timeout_mins}.toInteger(),与上述相同

time: ${env.timeout_mins.toInteger()},与上述相同

我还能尝试其他方法吗?


问题答案:

并不是失败的转换,只是您不能在options块中引用环境变量

这也会失败(nullpointer异常):

pipeline {
    agent none
    environment {
        timeout_mins = 'MINUTES'
    }
    options {
        timeout(time: 1, unit: env.timeout_mins)
    }
    stages {
        stage("test print") {
            steps {
                echo "timeout_mins: ${env.timeout_mins}"
                sh "sleep 120"
            }
        }
    }
}

这有效:

def timeout_in_minutes = 1

pipeline {
    agent none
    options {
        timeout(time: timeout_in_minutes, unit: 'MINUTES')
    }
    stages {
        stage("test print") {
            steps {
                echo "timeout_in_minutes: ${env.timeout_in_minutes}"
                sh "sleep 120"
            }
        }
    }
}


 类似资料:
  • 问题内容: 我有和。我想转换和整数和执行。如何在UNIX中做到这一点? 当前为我返回的结果。 问题答案: 标准解决方案: 您也可以: 但是请注意,这将被视为八进制数字!(因此与相同,但与有所不同)。

  • 本文向大家介绍如何在JavaScript中将字符串转换为整数?,包括了如何在JavaScript中将字符串转换为整数?的使用技巧和注意事项,需要的朋友参考一下 到转换 一个字符串 到整数 parseInt函数() 函数中使用的JavaScript。当字符串不包含数字时,parseInt()函数将返回Nan(不是数字)。如果发送带有数字的字符串,则仅该数字将作为输出返回。此函数将不接受空格。如果发送

  • 问题内容: 我有一个来自MySQL查询的元组,像这样: 我想将所有字符串元素转换为整数,然后将它们放回列表列表中: 我试图用它来实现它,eval但是还没有得到任何体面的结果。 问题答案: 是Python标准的内置函数,用于将字符串转换为整数值。你可以使用包含数字作为参数的字符串来调用它,然后返回转换为整数的数字: 上面的照片2。 如果你知道列表T1的结构(它仅包含列表,仅一个级别),则可以在Pyt

  • 我试图从标准输入中读取一些非常大的数字,并将它们相加。 然而,要添加到BigInteger,我需要使用

  • 问题内容: 有没有一种方法可以将整数转换为PHP中的字符串? 问题答案: 您可以使用该函数将数字转换为字符串。 从维护的角度来看,它显然是您正在尝试做的事情,而不是其他一些更深奥的答案。当然,这取决于您的上下文。

  • 我想有一个JPQL查询,它可能看起来像: 其中a.num是一个整数。我想将此转换为字符串以使用类似的条件。然而,上述转换在JPQL中不起作用。我该如何实现这一点?