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

时间:2016-01-28 17:54:07

标签: shell bamboo

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

例如,我按如下所示设置Go,并希望后续的任务(脚本)可以访问我在此处导出的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

2 个答案:

答案 0 :(得分:3)

这是使用Injecct 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)”>>建立/ docker.properties

  • 配置以下Inject任务,以将上一步中的属性文件读入Bamboo变量。将PATH设置为属性文件(例如 build / docker.properties )并设置命名空间,例如 docker

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

  

echo $ bamboo.docker.MYVAR

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

some_key1=some_value1
some_key2=some_value2

答案 1 :(得分:2)

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

...
echo export GOROOT=$GOROOT >>$GOROOT/.vars
echo export GOPATH=$GOPATH >>$GOROOT/.vars
echo export PATH=$PATH >>$GOROOT/.vars

然后,稍后开始的其他脚本应该在开头附近(假设它们以GOROOT目录中的工作目录开头):

source .vars

(或者在启动其他脚本的脚本中添加它。)