批处理文件中的Bamboo变量替换

15
我们正在运行安装在Windows机器上的Atlassian Bamboo构建服务器4.1.2版本。我创建了一个批处理文件并在任务中执行。脚本只是在.bat文件中引用,而不是在任务中内联使用(例如createimage.bat)。
在createimage.bat中,我想使用Bamboo的PLAN变量。通常的变量语法不起作用,也就是没有被替换。脚本中的一行可能会像这样:
goq-image-${bamboo.INTERNALVERSION}-SB${bamboo.buildNumber}

有什么想法吗?


我找到了这篇文章: https://answers.atlassian.com/questions/66109/accessing-build-specific-variables-from-script-without-having-to-use-environment-variables-box-on-script-config-page - Chris
1个回答

17
您正在使用内部Bamboo变量语法,但Script Task将其传递到操作系统的脚本环境中,因此需要相应地引用它们,例如(请注意术语之间的下划线):
  • Unix - goq-image-$bamboo_INTERNALVERSION-SB$bamboo_buildNumber
  • Windows - goq-image-%bamboo_INTERNALVERSION%-SB%bamboo_buildNumber%
令人惊讶的是,我找不到Windows变体的官方参考,目前只有Using variables in bash:

Bamboo变量被导出为bash shell变量。所有句点(periods)都转换为下划线。例如,变量bamboo.my.variable在bash中为$bamboo_my_variable。这与文件脚本任务(不是内联脚本任务)有关。

然而,我已经从Atlassian的文档中学习了Windows语法,并按照Bamboo变量替换/定义中所述进行了测试和使用:
这些变量也可以作为环境变量在脚本任务中使用,尽管名称略有不同,例如Unix中的$bamboo_custom_aws_cfn_stack_StringWithRegex或Windows中的%bamboo_custom_aws_cfn_stack_StringWithRegex%。

1
我知道这可能已经有一段时间了,也许事情已经有所变化。我曾尝试在批处理文件中使用%bamboo_buildNumber%和%bamboo.buildNumber%,但结果是一个空字符串。 - TigersEye120
@TigersEye120 我刚在Bamboo中测试了我的脚本,现在它能正常工作了。在Bamboo中,你的脚本应该是%bamboo_buildNumber%,但如果你想在批处理文件中使用这个变量/参数,你需要在从Bamboo调用批处理文件时将其传递过去。根据我对Bamboo语法(如果我理解正确的话)的理解,Bamboo语法不适用于Bamboo范围/计划之外。 - Eitel Dagnin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接