在Jenkins中使用参数化凭据

在Jenkins中使用参数化凭据,jenkins,Jenkins,假设我有一些web应用的开发、qa和稳定的服务器环境,以及相应的git分支。每个环境都应该不断地整合。每个环境都有一个单独的用户名/密码对,用于发布应用程序。我想做一个Jenkins多配置(matrix)作业来发布到所有这些环境。几乎可以肯定,发布必须使用shell脚本完成 我失败的尝试包括使用Jenkins凭证和凭证绑定插件。凭据绑定提供了一种使用参数将凭据作为环境变量注入的方法。但是,动态设置此参数(例如,如果ENV==dev:CREDS=CREDS\u dev)似乎是不可能的。构建脚本发生

假设我有一些web应用的开发、qa和稳定的服务器环境,以及相应的git分支。每个环境都应该不断地整合。每个环境都有一个单独的用户名/密码对,用于发布应用程序。我想做一个Jenkins多配置(matrix)作业来发布到所有这些环境。几乎可以肯定,发布必须使用shell脚本完成

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


有什么方法可以做到这一点吗?

也有类似的情况,并且使用了参数化构建()的groovy脚本。在我的例子中,我有一个定义为“DEPLOY”的choice参数,它有不同的值,比如“Test”、“Release”,然后在下面的groovy脚本(经过评估的groovy脚本)中:

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

echo %DEPLOY_URL%
echo %DEPLOY_STORAGE%
我还定义了另一个选项参数“Deploy.Branch”,其值为“dev”和“master”。并将其用作要生成的分支的参数,该值设置为(如果要基于参数动态指定分支):


希望这能有所帮助。

也有类似的情况,并且使用了参数化构建()的groovy脚本。在我的例子中,我有一个定义为“DEPLOY”的choice参数,它有不同的值,比如“Test”、“Release”,然后在下面的groovy脚本(经过评估的groovy脚本)中:

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

echo %DEPLOY_URL%
echo %DEPLOY_STORAGE%
我还定义了另一个选项参数“Deploy.Branch”,其值为“dev”和“master”。并将其用作要生成的分支的参数,该值设置为(如果要基于参数动态指定分支):


希望这能有所帮助。

以下是我最后做的事情。这是一种解决方法,我认为Jenkins的设计有缺陷或缺少用例

  • 重拨我的凭据,使其具有标准ID(这在高级部分中,创建后无法设置)
  • Matrix job运行一个简单的脚本,以找出什么env映射到什么creds ID,然后触发
  • 执行部署的主要作业

    • 以下是我最后做的事情。这是一种解决方法,我认为Jenkins的设计有缺陷或缺少用例

      • 重拨我的凭据,使其具有标准ID(这在高级部分中,创建后无法设置)
      • Matrix job运行一个简单的脚本,以找出什么env映射到什么creds ID,然后触发
      • 执行部署的主要作业

      某些帐户的用户名是“testaccount”吗?密码来自何处?是的,您可以添加另一个变量,如下所示:。。。DEPLOY_STORAGE:“testaccount”,DEPLOY_PASSWORD:“pass”]正确,但密码在作业中是硬编码的。我想用Jenkins凭据来做。在Jenkins设置中设置全局环境变量,然后在上面的脚本中使用它们来设置本地环境变量,而不是硬编码值全局环境变量中的密码有点安全风险,不是吗?同样,我想用凭证来做这件事。我已经可以用普通的环境变量来做了。“testaccount”是某个帐户的用户名吗?密码来自何处?是的,您可以添加另一个变量,如下所示:。。。DEPLOY_STORAGE:“testaccount”,DEPLOY_PASSWORD:“pass”]正确,但密码在作业中是硬编码的。我想用Jenkins凭据来做。在Jenkins设置中设置全局环境变量,然后在上面的脚本中使用它们来设置本地环境变量,而不是硬编码值全局环境变量中的密码有点安全风险,不是吗?同样,我想用凭证来做这件事。我已经可以用普通的环境变量来做了。
      */${Deploy.Branch}