Bamboo:在后续的 Maven 任务中访问脚本变量

Bamboo: Access script variable in subsequent maven task

我见过许多 post 人要求在脚本中访问 Bamboo 变量,但这不是关于那个的。

我正在 Shell 脚本任务中定义一个变量,如下所示,然后我想在后续的 maven 任务中访问该变量。

#!/bin/sh
currentBuildNumber=${bamboo.buildNumber}
toSubtract=1
newVersion=$(( currentBuildNumber - toSubtract ))
echo "Value of newVersion: ${newVersion}"

这个非常好。但是我有一个后续的 Maven 3 任务,我尝试通过键入 ${newVersion} 来访问这个变量,我得到以下错误

error   07-Jun-2019 14:12:20    Exception in thread "main" java.lang.WhosebugError
simple  07-Jun-2019 14:12:21    Failing task since return code of [mvn --batch-mode -Djava.io.tmpdir=/tmp versions:set -DnewVersion=1.0.${newVersion}] was 1 while expected 0

基本上,我想通过使用 ${bamboo.buildNumber} 并减去一些数字来自动生成构建的 jar 文件的版本号,这样我就不必每次都输入新的版本号我运行一个版本。

感谢您的帮助...谢谢,

编辑:我也在 Atlassian 论坛上 post 提出了同样的问题......当我在那里得到答案时我会更新这个 post...... https://community.atlassian.com/t5/Bamboo-questions/Bamboo-Access-script-variable-in-subsequent-maven-task/qaq-p/1104334

一般来说,我发现的最佳解决方案是将结果输出到文件并使用注入变量任务将变量读入构建中。

例如,在某些构建中我需要一个 SUFFIX 变量,所以在 bash 脚本中我最终会做

SUFFIX=suffix=-beta-my-feature
echo $SUFFIX >> .suffix.cfg

然后我可以使用注入变量任务来读取该文件

Inject Variables Task

确保它是一个 Result 变量,您应该可以使用 ${bamboo.NAMESPACE.name} 作为后缀来访问它,它将是 ${bamboo.VERSION.suffix}