Jenkins load env vars from file with expanding
Suppose you have some .env
files that you would like to use in Jenkins.
rabbitmq.env
RABBITMQ_DEFAULT_USER=guest
celery.env
AMQP_USERNAME=${RABBITMQ_DEFAULT_USER}
If you use this files somewhere else, for example in Docker, you do not want to convert them to groovy files that natively loaded by Jenkins.
So you need some code that will load this .env
file into Jenkins environment
vars (env.*
).
This simple groovy function will load .env
file (with key=value
on each line) into
Jenkins env
.
So after that you could use env.AMQP_USERNAME
in you Jenkinsfile.
The problem with this function - it won’t expand vars. That means that env.AMQP_USERNAME
will be equal string ${RABBITMQ_DEFAULT_USER}
.
If you want all environment vars like ${..}
to be expanded (substituted with their
respective values) we should find another solution.
For this purpose I created this simple groovy function and some Python code:
How to use it in declarative Jenkinsfile:
With this approach Jenkins env vars will be loaded from .env
file and expended
so env.AMQP_USERNAME
== guest