如何在Jenkins多分支管道中添加环境变量

3
我正在处理一个Django项目,将其与Jenkins多分支Pipeline进行集成。我已经安装了环境注入器插件,但是即使通过Multibrach Pipeline选项,我仍无法注入环境变量。
我有一些环境变量,例如DB_PASSWORD,必须包含在envvars中。
非常感谢您的任何见解。

你可以将它们添加为项目参数,然后通过$varName简单地引用它们。你试过了吗? - SV Madhava Reddy
1
withEnvwithCredentials对您无效吗? - mkobit
@SVMadhavaReddy 你在 Jenkinsfile 中如何引用它们? - Erick Mwazonga
@mkobit 我知道这个选项,但是由于您无法直接添加到Jenkins多分支项目中,我该如何在我的Jenkinsfile中添加它呢? - Erick Mwazonga
@mkobit withEnv(['DB_PASSWORD=password']) { sh ''' virtualenv venv . venv/bin/activate python manage.py collectstatic --noinput deactivate ''' } 已经可用,但问题是我把我的DB_PASSWORD值暴露给了公众,感谢之前的见解。 - Erick Mwazonga
显示剩余2条评论
1个回答

1

由于您需要使用密钥,最佳实践是使用withCredentials插件,该插件可以加载存储在Jenkins凭据存储中的凭据,并将它们作为环境变量暴露给其块/闭包内执行的代码。使用withCredentials不会在Jenkins日志中公开它们。

withCredentials([[$class: 'UsernamePasswordMultiBinding',
credentialsId: 'DB_Creds', 
usernameVariable: 'DB_USERNAME', 
passwordVariable: 'DB_PASSWORD']]) {// do stuff }

对于非敏感的环境变量,请使用 withEnv。

withEnv(["AWS_REGION=${params.AWS_REGION}"]) {// do stuff }

如果出于某些原因,您希望在整个流水线中设置环境变量(虽然不是完全推荐,但有时是必要的):

env.MY_VAR='var'
echo("My Env var = ${env.MY_VAR}")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接