定义奔步计划变量时,页面有这个。
对于任务配置字段,请使用语法 ${bamboo.myvariablename}.对于内联脚本,变量公开为 可以使用语法访问的 shell 环境变量 $BAMBOO_MY_VARIABLE_NAME (Linux/Mac OS X) or %BAMBOO_MY_VARIABLE_NAME% (视窗)。
但是,这在我的 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
在日志查看器窗口中。
有什么指示吗?
我尝试了以下方法,它有效:
在计划中,我将my_plan_var设置为"它有效"(不带引号)
在内联脚本中(不要忘记第一行):
#/bin/sh
PLAN_VAR=$bamboo_my_plan_var
echo "testing: $PLAN_VAR"
我得到了预期的结果:
测试:它有效
我还想创建一个 Bamboo 变量,我发现唯一可以在脚本之间共享它的是如下所示inject-variables
:
- 在将创建变量的脚本之后添加到
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
。
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
Scope
可以是局部的,也可以是结果。本地意味着它仅适用于当前作业,结果意味着它可以用于此计划的后续阶段以及从结果创建的发布。
Namespace
仅用于避免与其他变量的命名冲突。
有了上述内容,您可以在以后的脚本中将该变量与${bamboo.inject.GIT_VERSION}
一起使用。最后一个脚本任务只是查看它是否在其他脚本中工作。您还可以将 Web 应用程序中的变量视为生成元数据。
我在构建(在我的情况下编译 C 代码)之前使用上述脚本,因此我还可以创建一个可供源代码使用的version.h
文件。
这仍然有点麻烦,但我对此感到满意,我希望它能帮助其他人配置 Bamboo。奔步文档可能会更好。(仍然有很多尝试和错误)