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

Posted

技术标签:

【中文标题】批处理文件中的 Bamboo 变量替换【英文标题】:Bamboo variable replacement in batch file 【发布时间】:2012-08-30 12:33:19 【问题描述】:

我们在 Windows 机器上运行 Atlassian 的 Bamboo 构建服务器 4.1.2。我创建了一个在任务中执行的批处理文件。该脚本只是在 .bat 文件中引用,而不是在任务中内联。 (例如 createimage.bat)

在 createimage.bat 中,我想使用 Bamboo 的 PLAN 变量。通常的变量语法不起作用,意味着没有被替换。例如,脚本中的一行可以是:

goq-image-$bamboo.INTERNALVERSION-SB$bamboo.buildNumber

有什么想法吗?

【问题讨论】:

我找到了这篇文章:answers.atlassian.com/questions/66109/… 【参考方案1】:

您正在使用内部 Bamboo variables 语法,但 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 变量。所有句号 (句点)转换为下划线。例如,变量 bash.bamboo.my.variable 是 $bamboo_my_variable。这与 文件脚本任务(不是内联脚本任务)。

但是,我在某些时候从 Atlassian 的文档中找到了 Windows 语法,并按照Bamboo Variable Substitution/Definition 中的说明对其进行了测试和使用:

例如,这些变量也可用作脚本任务中的环境变量,尽管名称略有不同,例如 $bamboo_custom_aws_cfn_stack_StringWithRegex (Unix) 或 %bamboo_custom_aws_cfn_stack_StringWithRegex% (Windows)

【讨论】:

我知道这已经有一段时间了,所以也许事情已经改变了。我在批处理文件中尝试了 %bamboo_buildNumber% 和 %bamboo.buildNumber%,但结果是一个空字符串。 @TigersEye120 刚刚在 Bamboo 中测试了我的脚本,它正在运行。在 Bamboo 中,您的脚本应该是 %bamboo_buildNumber%,但要在批处理文件中使用此变量\参数,您需要在从 Bamboo 调用批处理文件时传递它。 Bamboo 语法(如果我理解正确的话)不适用于 Bamboo 范围/计划之外。

以上是关于批处理文件中的 Bamboo 变量替换的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件中的字符串替换

批处理将文本中的变量名替换为变量值并删除定义赋值语句

在 FOR 循环批处理语法中使用变量进行字符串替换

bat SET中替换字符串(用变量代表需替换的字符串)

列出内联脚本中的所有竹变量

如何从 Powershell/其他脚本设置 Bamboo 变量?