2017-04-26 376 views
1

我在Jenkinsfile如下:如何在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" 
      } 
     } 
    } 
} 

我想重新使用环境PARAMS如在多个地方timeout_mins,但需要将其转换为整数,在某些地方某些插件。余与上述实施例得到的错误是如下:

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

任何一个是否有一种方法从String转换为int在Jenkinsfile中?我试过 time: env.timeout_mins,但是这会产生一个空值。

time: ${env.timeout_mins},产率: WorkflowScript:7:方法调用的参数@线7,柱23 超时(时间:$ {env.timeout_mins},单位: '分')

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

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

任何其他的东西,我可以试试吗?

回答

1

这不是转换失败,只是你不能在选项块中引用环境变量。

这也失败(空指针异常):

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_mins: ${env.timeout_mins}" 
       sh "sleep 120" 
      } 
     } 
    } 
} 
相关问题