установка переменных среды в файле jenkins - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь написать сценарий сборки jenkins для моего проекта в Groovy. проблема в том, что я хочу определить некоторые переменные в верхней части скрипта и использовать их, когда я хочу в качестве переменной среды.

def someVariable = 'foo'

pipeline{
    agent any

    stages{
        stage("build"){
            environment {
                specialParameter = someVariable
            }
            steps{
                ...
            }
        }
        ...
    }

}

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Только что нашел другой способ использовать определенные переменные окружения.

def getsomeVariable (){
    return 'foo'
}


pipeline{
    agent any

    stages{
        stage("build"){
            environment {
                specialParameter = getsomeVariable()
            }
            steps{
                ...
            }
        }
        ...
    }

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

Сначала вы можете просто использовать раздел среды, чтобы определить переменные среды, которые известны в вашем сценарии целиком:

pipeline {
    agent any
    environment {
        TEST='myvalue'
    }
    stages{
        stage("build"){
            steps{
                ...
            }
        }
    }
}

Вы также можете определить переменную, известную только за один этап:

pipeline {
    agent any
    stages{
        stage("build"){
            environment {
                TEST='myvalue'
            }
            steps{
                ...
            }
        }
    }
}

Но для вашего решения (используя def над конвейером) вы можете просто сделать:

def someVariable = 'foo'

pipeline{
    agent any

    stages{
        stage("build"){
            steps{
                echo someVariable
            }
        }
    }
}

Это выдаст 'foo'.

Более подробную информацию о синтаксисе объявлений переменных можно получить, прочитав онлайн-книгу Jenkins.

UPDATE:

def someVariable = 'foo'

pipeline{
    agent any

    stages{
        stage("build"){
            environment {
                TEST = sh(script: "echo -n ${someVariable}", returnStdout: true)
            }
            steps{
                sh 'echo "${TEST}"'
            }
        }
    }
}

Выход:

[test] Running shell script
+ echo foo
foo
...