15

我对 Hudson 有疑问,因为我的工作需要两个参数来构建,第一个指定环境,可以是 DEV、QA、PROD 之一,第二个是特定服务器,此参数取决于第一个。

例如,如果我选择环境 DEV,则第二个参数只能是 DEV1,DEV2, MAQ1 。我不知道是否存在具有此功能的插件,或者我需要用 groovy 制作一些东西。我不知道请帮帮我。

谢谢

4

6 回答 6

20

尝试主动选择插件。它是 Uno-Choice 插件的第二个名称,但它位于官方 Jenkins 存储库中,不需要 UpdateSites Manager 插件。(两个插件的作者相同)。插件在插件的描述页面上有一个很好的文档,其中包含示例(和 gif 演示)。

于 2015-07-24T17:32:57.057 回答
12

一个好的插件(要求您拥有UpdateSites Manager插件并注册biouno 更新站点)是uno-choice 插件(和朋友)。

Uno-Choice Cascade Dynamic Parameter Plugin插件不仅允许两个以上级别的依赖关系,而且可以为参数生成动态内容,这些参数依赖于使用脚本程序或内联 groovy 的先前输入。

这肯定比以前的答案更有能力。

于 2014-09-24T03:11:00.037 回答
4

当您打开“构建项目”页面时,Jenkins 似乎加载了要选择的参数列表。选择参数时也不会发生回调。

在这种情况下,如果没有 javascript 和自定义插件,就很难根据第一个参数来限制第二个参数。

我还看了那些:

我会向 jenkins 用户列表询问更多信息。

于 2013-08-23T06:02:48.247 回答
2

对于所有偶然发现相同问题的人(就像我一样)。有一个相当新的 Jenkins 插件可用,它完全符合这里的要求:显示一组相关的下拉菜单,当主框更改选择时更新相关框。

依赖下拉框示例

对于您的工作,您只需执行以下步骤:

安装“多选参数插件”

“多选参数插件”可以从 Jenkins 插件管理中安装,文档可在其 Jenkins 插件页面上找到

添加新参数

  1. 使用“多选参数”类型
  2. 将名称设置为合理的值
  3. 做一个简短的描述
  4. 配置如下图:
H,Environment,Machine
V,SELECTED_ENVIRONMENT,SELECTED_MACHINE
T,Development,
C,DEV,DEV1
T,Development,
C,DEV,DEV2
T,Quality Assurance,
C,QA,QA1
T,Quality Assurance,
C,QA,QA2
T,Quality Assurance,
C,QA,QA3
T,Production,
C,PROD,Machine1
T,Production,
C,PROD,Machine2

使用选定的值

当您在作业中运行“使用参数构建”时,会显示以下框以供选择:

构建与示例项目屏幕匹配的参数下拉列表

在您的构建脚本中,您可以简单地使用配置的环境变量SELECTED_ENVIRONMENTSELECTED_MACHINE,其中包含从两个选择框中选择的值。在 CSV 配置的 -prefixes 行中配置的“人类可读名称”T仅显示在选择框中,您仍然可以获得类似的技术名称DEV并将PROD其传递到环境变量中。

于 2021-10-05T16:19:32.113 回答
0

你可以试试EnvInject 插件

首先将第一个参数放入设置文件。然后插件可以从文件中读取。第二步,使用您自己的脚本生成第二个参数。

于 2013-08-23T02:46:02.783 回答
0

我遇到了类似的问题。我有一个用于环境 Dev1、Dev2、..... 的参数,还有一个用于我需要运行该作业的服务器的参数。我可以从第一个计算第二个,但是该作业已经在运行,我不能再将它移动到另一台服务器上。

所以我最终得到了这两个参数以及所有可能的选择,并教用户只选择有效的组合。我可以在脚本执行期间测试组合是否有效。我还在其中一个包含有效组合的参数的注释中放置了一个小的 html 表。

在您的情况下,您可以根据第二个参数的值计算第一个参数的值吗?然后,您将能够计算(如果仍然需要)第一个参数的值,将其写入临时属性文件并在稍后的构建步骤中使用EnvInject 插件加载它。

于 2013-10-22T18:49:48.047 回答