如何将很多竹变量传递给docker容器?

时间:2017-10-06 15:52:58

标签: docker continuous-integration bamboo

我有Docker配置任务,我需要在docker容器中执行一个使用Bamboo变量的bash脚本。

有没有办法将所有Bamboo变量传递给docker容器?

我有很多Bamboo计划,其中包含很多不同的变量,因此将所有变量放在容器环境变量中都不是一种选择。

当然,我可以在一个任务中将它们转储到文件中,并在docker任务中解析文件中的变量,但我希望找到一个更简单的解决方案。

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用env_file option using compose

web:
  env_file:
    - your-variables.env

或使用docker run --env-file=your-variables.env ...

.env文件是一个简单的键值文本文件:

# my env file
BAMBOO_ENV=development

答案 1 :(得分:0)

您使用的是哪个版本的Bamboo?

在某些版本的Bamboo中,竹变量是docker容器有问题,但在Bamboo 6.1.0中已修复:

Unable to use variables in Container name field in Run docker task

解决方法:

  • 创建在Docker任务之前运行的脚本任务。
  • 运行

    之类的命令
    echo "export sourcepath=$ini_source_path" > scriptname.sh
    chmod +x scriptname.sh
    

Docker Task将$ {bamboo.working.directory}映射到Docker \数据卷。

因此,刚才创建的scriptname.sh脚本在Docker容器中可用。脚本将被执行,并将正确设置变量。

此帖子中的更多信息: How to send bamboo variables from Bamboo script to docker container?

答案 2 :(得分:0)

我认为唯一的方法就是你已经提到的 - 在流程的早期专用任务中将env变量转储到文件中。说,你这样做:

#!/bin/bash
env | grep ^bamboo_ > my_env_file

请注意严格的正则表达式,以防止转储变量,如PATH。

然后在docker任务中,在“Additional arguments”中添加以下

--env-file=my_env_file