如何在内联脚本任务中使用Bamboo计划变量?

9
当定义Bamboo计划变量时,页面上有以下内容。
对于任务配置字段,请使用语法${bamboo.myvariablename}。对于内联脚本,变量会作为shell环境变量公开,可以使用以下语法访问$BAMBOO_MY_VARIABLE_NAME(Linux / Mac OS X)或%BAMBOO_MY_VARIABLE_NAME%(Windows)。
然而,在我的Linux内联脚本中,这并不起作用。例如,我已经定义了以下计划变量:
name: my_plan_var    value: some_string

我的内联脚本只是...

PLAN_VAR=$BAMBOO_MY_PLAN_VAR
echo "Plan var: $PLAN_VAR"

我只得到了一个空白字符串。

我尝试过这个方法

PLAN_VAR=${bamboo.my_plan_var}

但是我收到了

${bamboo.my_plan_var}: bad substitution

在日志查看器窗口中有什么提示吗?

你尝试过使用小写字母吗?例如 $bamboo_MY_PLAN_VAR。 - Borys Kupar
@BorysKupar,大小写不重要,谢谢。 - Chris F
这对我非常有效,也许你可以发布一个关于在计划级别上如何声明变量的图片? - Raffi
我曾经遇到一个类似的问题,是在Windows内联脚本中变量名中的“bamboo”大小写不正确导致了问题。当我使用${Bamboo.MyVariable}时它没有起作用,但是将其更改为${bamboo.MyVariable}后就按预期工作了。 - TonE
2个回答

7
我尝试了以下方法,它有效:
在计划中,我将my_plan_var设置为"it works"(不要加引号)
在内联脚本中(不要忘记第一行):
#/bin/sh

PLAN_VAR=$bamboo_my_plan_var
echo "testing: $PLAN_VAR"

我得到了预期的结果:

测试:它运行正常


1
你尝试过在另一个任务中使用那个PLAN_VAR吗?可以告诉我你是怎么做的吗? - Dhana

0

我也想创建一个Bamboo变量,我发现唯一的分享方式是使用inject-variables,如下所示:

  1. 在你创建变量的脚本之后,在bamboo-spec.yaml中添加以下内容:
Build:
  tasks:
    - script: create-bamboo-var.sh
    - inject-variables:
        file: bamboo-specs/vars.yaml
        scope: RESULT
        # namespace: plan
    - script: echo ${bamboo.inject.GIT_VERSION} # just for testing

注意:命名空间默认为inject

  1. create-bamboo-var.sh中创建文件bamboo-specs/vars.yaml
#!bin/bash
versionStr=$(git describe --tags --always --dirty --abbrev=4)
echo "GIT_VERSION: ${versionStr}" > ./bamboo-specs/vars.yaml

或者对于多行文本,您可以使用:

SW_NUMBER_DIGITS=${1}    # Passed as first parameter to build script
cat <<EOT > ./bamboo-specs/vars.yaml
GIT_VERSION: ${versionStr}
SW_NUMBER_APP: ${SW_NUMBER_DIGITS}
EOT

作用域可以是本地或结果。本地意味着它仅适用于当前作业,而结果意味着它可以在此计划的后续阶段和从结果创建的发布中使用。

命名空间仅用于避免与其他变量发生命名冲突。

有了上述内容,您可以在以后的脚本中使用该变量${bamboo.inject.GIT_VERSION}。最后一个脚本任务只是为了查看它是否在其他脚本中工作。您还可以在Web应用程序中查看构建元数据中的变量。

我在构建之前(在我的情况下编译C代码)使用上述脚本,以便我还可以创建一个version.h文件,该文件可由源代码使用。

这仍然有点麻烦,但我对此感到满意,并希望它能帮助其他人配置Bamboo。 Bamboo文档可能会更好。(仍需尝试和错误)


请注意,附加到您计划的存储库的修订版本可以直接从Bamboo中使用变量名bamboo.planRepository.1.revision获取,详情请参见https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html。 - Raffi

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