【发布时间】:2012-08-16 09:00:32
【问题描述】:
我正在使用 Jenkins 创建构建管道,并且需要在管道中触发部署步骤。这意味着一个手动过程(构建自动发生,定时,然后在部署阶段停止,等待手动授权)。
我还需要使用上一步中的参数触发部署步骤。
因此,使用“参数化插件”我可以在作业之间传递参数。我可以触发自动或手动触发的下游作业(不确定这是标准功能,还是某些插件添加了手动构建)。
但是,我找不到任何方法来触发手动参数化作业。
有人知道这样做的方法吗?有没有其他插件可以用?
我需要参数的原因是我已经创建了一个通用的部署作业,并且需要传入模块名称和 maven 版本来部署。我可以为每个模块创建特定的部署作业,但这会非常痛苦。
我也一直在考虑以下问题,但这似乎是一个杂项:
- 自动化作业执行构建,触发“部署触发器”构建,传递参数。
- “部署触发器”将这些参数写入文件系统上的文件(构建步骤 - shell 执行),并手动触发实际部署作业
- 部署作业(必须使用“部署触发器”作业中的 WORKSPACE)从文件系统读取参数(使用 EnvInject 插件)。
这种方法存在各种问题
- 我就是不喜欢。
- 有一个中间作业只是来传递参数。这会使 Jenkins 工作区变得混乱
- 由于构建是在同一个 WORKSPACE 上执行的,所以对我来说似乎很脆弱(尽管可行!)
【问题讨论】:
-
你有没有为此想出一个可以忍受的解决方案?
-
没有。最后我自动触发了一个中间作业,将参数传递给它。这会将环境变量设置为工作区 FS 上的文件。然后我触发了一个手动步骤,在 same 环境中运行另一个作业,它根据之前设置的环境文件设置了一个环境。哈基。
-
我只是在构建的后续步骤中使用了一个脚本来回显 myparameter=$POM_VERSION >> version.properties。然后在下一次构建中使用 EnvInject 读取 version.properties。