如何在脚本中引用Bamboo制品并获取其准确路径?
如何在Bamboo脚本任务中获取共享制品的准确路径
问题背景
已经能在Bamboo的阶段/任务间共享制品,比如配置“将制品'My artifact'放入目标目录'foo'”可以正常生效。但在Script任务里想把该制品作为参数传递时,无法获取其准确名称:用foo/*当参数的话,*不会被Shell展开,直接原样传递,即便将Interpreter设为Shell也没用。
希望找到类似${bamboo.artifact}的变量来直接引用,不想依赖Shell通配符,且已知制品在Bamboo中的名称,已查阅过Bamboo共享制品和变量相关文档。
解决方案
使用Bamboo内置的制品路径变量
Bamboo针对每个共享制品提供了专属的路径变量,格式为${bamboo.artifact.<制品名称>.destination}。注意制品名称里的空格要替换为下划线,比如你的例子中,变量就是${bamboo.artifact.My_artifact.destination},它会直接返回你设置的目标目录路径foo。获取具体制品文件路径
如果需要单个制品文件的完整路径,可以在脚本中结合变量和Shell命令实现:# 先通过变量拿到目标目录 ARTIFACT_DIR=${bamboo.artifact.My_artifact.destination} # 获取目录下的制品文件(假设只有一个文件) ARTIFACT_FILE=$(ls "$ARTIFACT_DIR"/*) # 将文件路径作为参数传递给目标命令 your_target_command "$ARTIFACT_FILE"这种方式既精准定位了制品目录,又能避免通配符不展开的问题。
让通配符正常展开的脚本写法
如果坚持使用通配符,不要直接在参数栏填写foo/*,而是把执行逻辑写到脚本内容中:# 在脚本内部执行,Shell会自动展开通配符 your_target_command foo/*确保Script任务的Interpreter设置为Shell,这样通配符就能被正确解析。
内容的提问来源于stack exchange,提问作者FuriousGeorge
相关产品推荐
相关产品推荐

