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

时间:2019-06-07 06:00:19

标签: shell maven-3 versioning bamboo

我见过很多帖子,人们要求在脚本中访问Bamboo变量,但这与事实无关。

我正在如下所示的Shell Script任务中定义一个变量,然后我想在后续的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.StackOverflowError
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论坛上发布了相同的问题...当我在那里得到答案时,我将更新此帖子... https://community.atlassian.com/t5/Bamboo-questions/Bamboo-Access-script-variable-in-subsequent-maven-task/qaq-p/1104334

1 个答案:

答案 0 :(得分:2)

通常,我发现最好的解决方案是将结果输出到文件中,并使用“注入变量”任务将变量读入内部版本。

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

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

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

Inject Variables Task

请确保它是一个Result变量,并且应该能够使用${bamboo.NAMESPACE.name}作为后缀1,它将是${bamboo.VERSION.suffix}