Jenkins загрузка переменных из файла с подстановками

Предположим вам необходимо использовать .env файлы в Jenkins.
rabbitmq.env
RABBITMQ_DEFAULT_USER=guest
celery.env
AMQP_USERNAME=${RABBITMQ_DEFAULT_USER}
Дженкинс умеет загружать groovy-файлы но предположим вы используете эти .env файлы где-то еще и не можете конвертировать их в groovy скрипты.
Значит вам необходима функция, которая загрузит .env файл в переменные Jenkins environment
(env.*).
Далее приведена Jenkins(groovy) функция, которая загружает.env файл (на каждой строке key=value)
в Jenkins env-переменные.
После ее работы вы сможете использовать env.AMQP_USERNAME в вашем Jenkinsfile.
Однако эта функция не подставляет значение переменных. То есть env.AMQP_USERNAME
будет буквально строкой ${RABBITMQ_DEFAULT_USER}.
Если вам необходимо подставить все ${..} то в этом вам поможет следующая комбинация
groovy и Питона:
Как их использовать в декларативном пайплайн Jenkinsfile:
pipeline {
// ...
stages {
// ...
stage('Prepare environment') {
steps {
script {
// ...
vars_text = sh(
script: """python expand_vars.py \
rabbitmq.env \
celery.env
""",
returnStdout: true
)
loadVarsFromText(vars_text)
// ...
}
}
}
// ...
}
// ...
}
// ...
private void loadVarsFromText(String text) {
// ...
}Эта техника поможет вам загрузить в переменные Jenkins .env файл
с подстановкой значений переменных, так что env.AMQP_USERNAME == guest