说我已经为某些Web应用程序提供了dev,qa和稳定的服务器环境,以及相应的git分支。每个环境都应该不断整合。每个环境都有一个单独的用户名/密码对,用于发布应用程序。我想将Jenkins多配置(矩阵)作业发布到所有这些环境。几乎可以肯定,发布必须使用shell脚本完成。
我失败的尝试包括使用Jenkins Credentials和Credentials Binding插件。凭据绑定提供了一种使用参数将凭证作为环境变量注入的方法。但是,动态设置此参数(例如if ENV == dev: CREDS = CREDS_dev
之类的内容)似乎不可能。之后会发生构建脚本,甚至使用环境脚本插件也无法正常工作。
有没有办法让这种情况发生?
答案 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设计有缺陷或缺少用例的问题,这是一种解决方法。