【问题标题】:Jenkins trigger parameter plugin - file parametersJenkins触发参数插件——文件参数
【发布时间】:2014-01-15 23:47:09
【问题描述】:

我有项目 A 和下游项目 B,它接受一个文件参数。当 A 完成时,项目 B 由 A 触发(来自Parameterized Trigger Plugin)。有没有办法可以预定义文件参数(例如文件属性文件),这样当项目 A->B 时,B 就可以在不需要手动选择的情况下获取文件?

【问题讨论】:

    标签: jenkins hudson jenkins-plugins hudson-plugins


    【解决方案1】:

    您可以为此使用Multijob plugin

    您的示例的一个简单实现是拥有第三个(多作业)项目,然后该项目有两个多作业阶段,每个阶段都有一个项目。您可以在每个阶段的退出代码上指定行为,并通过配置页面上的“高级”按钮使用参数


    编辑 multijob插件不支持File参数(比如从浏览器传入的文件),很可惜

    但是你可以伪造它

    项目 A(__upstream)

    其中 params.txt 是文件参数

    项目 B(__下游)

    其中 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 插件会在没有文件时阻塞并记住删除文件(或重命名),以便下次运行不会重用这些值

    【讨论】:

    • 它似乎并没有为文件参数添加额外的功能,但是,你能建议吗?
    • 您对文件参数是正确的,但是我通过解决方法更新了我的答案
    • 在 Project B 中触摸 params.txt 和注入环境变量的步骤不是多余的吗?参数化触发器插件中的“使用文件中的属性”已经为您做到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多