在Jenkins中使用参数化凭据

时间:2015-12-07 22:54:43

标签: jenkins

说我已经为某些Web应用程序提供了dev,qa和稳定的服务器环境,以及相应的git分支。每个环境都应该不断整合。每个环境都有一个单独的用户名/密码对,用于发布应用程序。我想将Jenkins多配置(矩阵)作业发布到所有这些环境。几乎可以肯定,发布必须使用shell脚本完成。

我失败的尝试包括使用Jenkins Credentials和Credentials Binding插件。凭据绑定提供了一种使用参数将凭证作为环境变量注入的方法。但是,动态设置此参数(例如if ENV == dev: CREDS = CREDS_dev之类的内容)似乎不可能。之后会发生构建脚本,甚至使用环境脚本插件也无法正常工作。

有没有办法让这种情况发生?

2 个答案:

答案 0 :(得分:0)

有类似的情况,并使用带参数化构建的groovy脚本(https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin)。在我的情况下,我有一个选择参数定义为“DEPLOY”并具有不同的值,如“Test”,“Release”,然后在下面的groovy脚本(Evaluated Groovy脚本)中:

if ("Test".equals(DEPLOY)) {def map = [DEPLOY_URL: "http://someurl", DEPLOY_STORAGE: "testaccount"]; return map } 

您应该可以在此处指定凭据或复制env变量。之后,您可以使用以下命令在Windows批处理命令中访问这些变量:

echo %DEPLOY_URL%
echo %DEPLOY_STORAGE%

我还有另一个选择参数定义为“Deploy.Branch”,其值为“dev”和“master”。并将其用作Branches to Build的参数,将值设置为(如果要根据参数动态指定分支):

*/${Deploy.Branch}

希望这有帮助。

答案 1 :(得分:0)

这就是我最终做的事情。对于我认为Jenkins设计有缺陷或缺少用例的问题,这是一种解决方法。

  • 重新设置我的信用卡,以便他们有标准ID(这是在高级部分,你不能在创建后设置它)
  • Matrix作业运行一个简单的脚本来确定env映射到什么信用证ID,然后触发......
  • 执行部署的主要工作