【发布时间】:2015-07-18 05:11:01
【问题描述】:
我正在使用 Jenkins Delivery Pipeline 插件。我有一些手动触发的参数化构建。如果我从项目页面触发构建,构建会显示一个需要定义参数的屏幕(如预期的那样)。但是,当我从 Delivery Pipeline 插件启动参数化构建时,它只是启动构建而不提供屏幕。这是奇怪的行为,是否可以让管道插件显示参数化的构建屏幕?
感谢您的帮助!
【问题讨论】:
我正在使用 Jenkins Delivery Pipeline 插件。我有一些手动触发的参数化构建。如果我从项目页面触发构建,构建会显示一个需要定义参数的屏幕(如预期的那样)。但是,当我从 Delivery Pipeline 插件启动参数化构建时,它只是启动构建而不提供屏幕。这是奇怪的行为,是否可以让管道插件显示参数化的构建屏幕?
感谢您的帮助!
【问题讨论】:
我是在笼统地回答这个问题。
您需要使用Parameterized Trigger Plugin,或使用Build Pipeline Plugin。 Jenkins 团队仍在解决 Delivery Pipeline 插件的这个问题。有关此问题的更新,请参阅此链接https://issues.jenkins-ci.org/browse/JENKINS-25685。您可以通过该链接了解何时解决。
如果可以将 Build Pipeline 插件合并到您的用例中,您可以使用它。 Build Pipeline 插件也存在类似问题,现已修复。它在 22 天内得到修复(https://issues.jenkins-ci.org/browse/JENKINS-25427,https://github.com/jenkinsci/build-pipeline-plugin/pull/56)。您只能希望 Delivery Pipeline 插件的相同问题很快得到解决。
能否提供 Jenkins 的版本、环境和插件版本?我可以根据您给出的答案更新我的答案。
【讨论】:
当您使用 Delivery Pipeline 插件,并且您有手动触发的参数化构建时,只要您将上游作业配置为将参数传递给下游作业,当单击“构建触发按钮”时管道视图页面,参数自动传递。
例如,假设您有这样的设置:
Compile_Project ---> Deploy_Project
假设您将一个名为versionNumber 的变量从Compile_Project 传递给Deploy_Project 作业。我们还假设您正在为您的 SCM 使用 Subversion,并且您的 versionNumber 看起来像 1.0.${SVN_REVISION}。 ${SVN_REVISION} 由 Jenkins 自动提供,因此您的版本号类似于 1.0.1234,其中 1234 是 Subversion 提供的提交号。
在您的 Delivery Pipeline 视图中,假设它配置为显示 3 个管道实例,并且在视图设置中启用了手动触发器。您的管道视图页面可能看起来像这样(是的 ASCII 艺术!):
Compile_Project ---> Deploy_Project (>)
Compile_Project ---> Deploy_Project (>)
Compile_Project ---> Deploy_Project (>)
在本例中,我使用(>) 表示手动触发按钮。底部的按钮会尝试部署版本1.0.1234,中间的按钮会尝试部署版本1.0.1235,顶部的按钮会尝试部署版本1.0.1236,假设您的项目已经获得连续的SVN提交。
为了将参数从Compile_Project 传递到Deploy_Project 作业,您需要执行以下操作。 (注意:听起来你已经完成了这部分,但我将它包括在内是为了以防你可能错过了一步,也是为了完整性。)
在Compile_Project 作业的配置中,作为构建后操作,选择“构建其他项目(手动步骤)”。在“下游项目名称”框中,输入Deploy_Project,然后从“添加参数”下拉列表中选择“预定义参数”。在出现的“参数”文本区域中,创建一个要传递的参数,我将其命名为VERSION_NUMBER。您将在文本区域中输入的内容是 VERSION_NUMBER=1.0.${SVN_REVISION}。这将使参数能够从Compile_Project 传递到Deploy_Project。但是,您还没有完成。
在Deploy_Project 作业的配置中,您需要将其设置为接受您传递给作业的参数。为此,请配置Deploy_Project,并选中“此构建已参数化”复选框。然后从“添加参数”下拉列表中添加一个字符串参数。在“名称”字段中,输入VERSION_NUMBER。此时,您可以在任何需要的地方使用${VERSION_NUMBER} 在Deploy_Project 的配置中,以指定要部署的项目的正确版本号。
【讨论】: