Как манипулировать переменной в конвейере Дженкинса - PullRequest
0 голосов
/ 21 февраля 2019

пробовал несколько проб и ошибок на том, где или как вырезать строку в переменной и присвоить новую переменную, которая будет использоваться стадией Дженкинса.Обычно просто удаляют -TEST конвейер Jenkins, указанный ниже:

properties([
    [$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], 
    parameters([choice(choices: ['SQA-ENV-CLONE', 'DEV-ENV-CLONE'], 
                description: 'Select the ENV', name: 'ENV')])])

pipeline {
  agent any

  stages {

    stage('VALIDATE ENVIRONMENT') {
      def ACTIVE = sh(returnStdout: true, script: "echo $ENV | sed -e 's/-CLONE//g'")

      steps {
         echo 'Checking 1st the ${ACTIVE}'
      }
    }
  }    
}   

Ошибка, которую я получаю

Running in Durability level: MAX_SURVIVABILITY
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 6: Not a valid stage section definition: "def ACTIVE = sh(returnStdout: true, script: "echo $ENV | sed -e 's/-CLONE//g'")". Some extra configuration is required. @ line 6, column 9.
       stage('VALIDATE ENVIRONMENT') {
       ^

1 error

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:131)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:125)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:560)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:521)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:330)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

Допустим, я выбрал "DEV-ENV-CLONE"в качестве значения я ожидаю успешной сборки с таким выводом:

Checking 1st the DEV-ENV

1 Ответ

0 голосов
/ 21 февраля 2019

Вам необходимо переместить def ACTIVE = sh(...) в шаг конвейера. script . Они являются скриптами Groovy, их можно заключить только в script step.

stage('VALIDATE ENVIRONMENT') {

  steps {

    script {
      ACTIVE = sh(
        returnStdout: true, 
        script: "echo $ENV | sed -e 's/-CLONE//g'"
      ).trim()      
    }

    echo "Checking 1st the ${ACTIVE}"
  }

}
...