我有项目A和下游项目B,它接受一个文件参数。当A完成时,项目B由A(Parameterized Trigger Plugin)触发。有没有办法可以预先定义文件参数(例如文件属性文件),这样当项目A-> B,B将能够获得文件而无需手动选择?
答案 0 :(得分:0)
您可以使用Multijob plugin进行此操作。
您的示例的一个简单实现是拥有第三个(多工作)项目,然后有两个多工作阶段,每个阶段都有一个项目。您可以在每个阶段的退出代码上指定行为,并使用配置页面上的“高级”按钮使用参数
EDIT multijob插件不支持File参数(例如从浏览器传入的文件),这是一个耻辱
但是你可以通过
伪造它PROJECT A(__ upstream)
其中params.txt是文件参数
PROJECT B(__downstream)
其中params.txt是文件参数
从A
触发时的结果Started by upstream project "__upstream" build number 8
originally caused by:
Started by user anonymous
[EnvInject] - Loading node environment variables.
Building on master in workspace /var/lib/jenkins/workspace/__downstream
[__downstream] $ /bin/sh -xe /tmp/hudson4094819031189787422.sh
+ touch params.txt
[EnvInject] - Injecting environment variables from a build step.
[EnvInject] - Injecting as environment variables the properties file path 'params.txt'
[EnvInject] - Variables injected successfully.
[__downstream] $ /bin/sh -xe /tmp/hudson1756581135746292166.sh
+ cat params.txt
+ env
+ grep TEST
+ sort
TEST1=abc
TEST3=xyz
+ rm params.txt
Finished: SUCCESS
直接触发时的结果
Started by user anonymous
[EnvInject] - Loading node environment variables.
Building on master in workspace /var/lib/jenkins/workspace/__downstream
Copying file to params.txt
[__downstream] $ /bin/sh -xe /tmp/hudson5504289990867483427.sh
+ touch params.txt
[EnvInject] - Injecting environment variables from a build step.
[EnvInject] - Injecting as environment variables the properties file path 'params.txt'
[EnvInject] - Variables injected successfully.
[__downstream] $ /bin/sh -xe /tmp/hudson8534892071758952425.sh
+ cat params.txt
TEST1=abc
TEST3=xyz
+ env
+ sort
+ grep TEST
TEST1=abc
TEST3=xyz
+ rm params.txt
Finished: SUCCESS
您必须触摸下游的文件,否则EnvInject插件会在没有文件的情况下阻塞并记住删除文件(或重命名),以便下次运行不会重复使用值