Как установить переменные команды Jenkins DSL в переменную groovy? - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь установить вывод некоторых команд плагинов DSL в env.переменные в Jenkins DSL и безуспешно.

Я попытался имитировать следующий способ установки вывода сценариев sh в переменные:

env.BUILD_NUM = sh([script: "get_build_number_from_s3 ${env.TARGET_ENV}", returnStdout: true]).trim()

Первое, что я пытаюсь сделать, это gitmodule.

Я задаю свою команду следующим образом:

env.DEVOPS_REPO_CLONE = git([branch: "development", credentialsId: 'bitbucket', url: 'https://bitbucket.org/team/repo.git'])
sh 'ls -lah'

, но получаю следующую ошибку:

WorkflowScript: 119: Expected a step @ line 119, column 13.
               env.DEVOPS_REPO_CLONE = git([branch: "development", credentialsId: 'bitbucket', url: 'https://bitbucket.org/team/repo.git'])
               ^

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:133)
    at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:559)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:520)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:319)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

По сути, я пытаюсь установитьвывод команд в переменные, таким образом, я могу показывать вывод только тогда, когда флаг DEBUG установлен для абстрагирования посторонних выводов для разработчиков, чтобы им не приходилось анализировать страницы текста.

Спасибо за ваш ввод.

1 Ответ

0 голосов
/ 03 января 2019

Похоже, вам нужно создать эти переменные в области действия environment {...} или script { ... }. Пример:

pipeline {
    environment {
        FOO = sh (
                script: 'pwd',
                returnStdout: true
              ).trim()
    }

    agent { label "master" }
    stages {
        stage("first") {
            steps {
                script {
                    BAR = sh (
                            script: 'ls',
                            returnStdout: true
                          ).trim()
                }
                sh "echo ${FOO}"
                sh "echo ${BAR}"
            }
        }
    }
}

Вы можете использовать returnStdout или returnStatus опции для сценариев оболочки, как описано здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...