Установка значения переменной env с помощью сценария оболочки в сценарии с конвейером - PullRequest
0 голосов
/ 11 октября 2018

У меня есть сценарий с одним этапом, на котором мне нужно установить результат текущей сборки на основе выходных данных сценария оболочки.К сожалению, похоже, что значение параметра в сценарии оболочки не меняет значение переменной, созданной с помощью withEnv.

Может ли кто-нибудь точно указать на ошибку в упрощенном фрагменте ниже (если он есть) или предложить какое-либо другое решение?

stage('MyStage') {
    withEnv(["MY_VAR=null"]) {
        if (env.someCondition1 || env.someCondition2) {
            sh '''#!/bin/bash
            echo $MY_VAR              # null
            export MY_VAR="UNSTABLE"
            printenv | grep MY_VAR    # MY_VAR="UNSTABLE"
            '''
        }
        echo env.MY_VAR                   // null
        currentBuild.result = env.MY_VAR
        echo currentBuild.result          // FAILURE
    }
}

1 Ответ

0 голосов
/ 11 октября 2018

Среда дочернего процесса теряется при выходе из дочернего процесса.Таким образом, ваши изменения в дочернем элементе MY_VAR будут потеряны после завершения процесса sh вашего ребенка.

Вам нужно будет сообщить об изменениях вашему родителю в сторону увеличения, возможно, с помощью

echo $MY_VAR

и захватывает этот вывод в родительском.В качестве альтернативы, запишите значения в файл и прочитайте их в родительском.

...