【问题标题】:How to pass a lot of bamboo variables to a docker container?如何将大量竹变量传递给 docker 容器?
【发布时间】:2019-01-29 16:43:26
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

  • 如果我的回答解决了你的问题,请采纳。所以未来的访客可以认出它。

标签: docker continuous-integration bamboo


【解决方案1】:

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

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 任务会将 ${bamboo.working.directory} 映射到 Docker \data 卷。

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

这篇文章的更多信息: How to send bamboo variables from Bamboo script to docker container?

【讨论】:

    【解决方案2】:

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

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

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

    然后在 docker 任务中,在“附加参数”中添加以下内容

    --env-file=my_env_file
    

    【讨论】:

      【解决方案3】:

      您可以使用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
      

      【讨论】:

        猜你喜欢
        • 2015-08-10
        • 2017-02-19
        • 2015-09-18
        • 2019-04-10
        • 2019-06-29
        • 2022-01-16
        • 2021-06-07
        • 2020-02-23
        • 2021-06-21
        相关资源
        最近更新 更多