Bamboo-在任务/脚本之间传递环境变量

Ale*_*tin 7 shell bamboo

是否可以将在一个脚本中设置的环境变量传递给Bamboo中的另一个脚本?

例如,我按如下所示设置Go,并希望后续的Task(脚本)可以访问我在此处导出的PATH和GOPATH。

set -e

if [ ! -d "go" ]; then
    wget -q https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz
    tar -xzf go1.5.linux-amd64.tar.gz
fi

export GOROOT=$(pwd)/go

mkdir -p gopath/
export GOPATH=$(pwd)/gopath
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

Vin*_*ris 8

这已使用Inject Variables插件实现,该插件从 5.7 开始捆绑:https : //marketplace.atlassian.com/plugins/com.atlassian.bamboo.plugins.bamboo-variable-inject-plugin/server/overview

方法如下:

  • 在初始任务中,让脚本将状态存储到文件(key=value格式)中,例如:

echo "MYVAR=$(cat some_variable_info_file)" >> build/docker.properties

  • 配置以下Inject任务以将上一步中的属性文件读取到 Bamboo 变量中。将路径设置为属性文件(如构建/ docker.properties),并设置一个命名空间,比如搬运工

  • 要在下一个脚本任务*中使用此变量,可以将其称为: $bamboo_docker_MYVAR其中docker是命名空间,MYVAR是属性文件中属性的键。例如,它可以被称为:

回声 $bamboo_docker_MYVAR

这意味着您仍然可以使用基于文件的方法,只需确保其中的数据类型为:

some_key1=some_value1
some_key2=some_value2
Run Code Online (Sandbox Code Playgroud)

等等。

*请注意,从 Bamboo 文档中,下划线是使用方法: https : //confluence.atlassian.com/bamboo/bamboo-variables-289277087.html

在 bash 中使用变量

Bamboo 变量导出为 bash shell 变量。所有句号(句点)都转换为下划线。例如,bash 中的变量bamboo.my.variable 是$bamboo_my_variable。这与文件脚本任务(不是内联脚本任务)有关。


小智 4

环境变量只能从父进程传递给子进程。要将它们放入不相关的程序中,您可以将它们写入文件中,然后在其他脚本中获取该文件:

...
echo export GOROOT=$GOROOT >>$GOROOT/.vars
echo export GOPATH=$GOPATH >>$GOROOT/.vars
echo export PATH=$PATH >>$GOROOT/.vars
Run Code Online (Sandbox Code Playgroud)

然后稍后启动的其他脚本应该在开头附近包含此内容(假设它们从 GOROOT 目录中的工作目录开始):

source .vars
Run Code Online (Sandbox Code Playgroud)

(或者将其添加到启动其他脚本的脚本中。)