我有一个Jenkins Job接受File作为参数并使用相同的文件我想触发下游项目.我该怎么做 ?看来jenkins不支持将文件作为参数传递给下游项目.我正在使用"触发/调用其他项目的构建"来触发下游项目.
使用参数化触发器插件但请注意以下事项:
该文件参数帮助写着:
提交文件的名称在环境变量中可用,其名称与文件位置相同.例如,如果您将文件位置设置为
abc.zip[UPLOADED_FILE],那么$ {abc.zip}[$ {UPLOADED_FILE}] 将为您提供从浏览器传递的原始文件名(例如my.zip).该名称将不包含目录名称部分.
[我的删除和补充.]
不幸的是,这在多个方面是错误的(使用Jenkins v1.609.1):
为什么这些都不好?
好吧,后者与内联帮助相反,两者都可能导致意外结果(在我的情况下也是如此),因为'.' 根据IEEE Std 1003.1,2013 Edition,'/'不是变量名称中的标准字符:
POSIX.1-2008的Shell和Utilities卷中的实用程序使用的环境变量名称仅由大写字母,数字和('_') [...]组成.
另请参阅Robert Gamble对linux环境变量名中允许字符的回答.
所以,答案是:
<您的上游项目>→ 配置 → 添加构建后操作 → 在其他项目上触发参数化构建
→ 添加参数 → 预定义参数 → 参数:
KEY =值对,每行一个(Java属性文件格式).[...]
当前构建参数和/或环境变量可以使用以下形式:$ {PARAM}或$ PARAM.
长话短说.这会将文件的绝对名称传递给下游项目:
ENV_VAR_IN_DOWNSTREAM_PROJECT=${WORKSPACE}/${UPLOADED_FILE}
Run Code Online (Sandbox Code Playgroud)UPDATE
我创建了一个相应的问题:[JENKINS-28996]从文件参数→文件位置创建的环境变量名称包含"目录名称部分",尽管在其内联帮助中有不同的说明
| 归档时间: |
|
| 查看次数: |
8181 次 |
| 最近记录: |