2017-04-26 377 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" 
      } 
     } 
    } 
} 
相關問題