如何在drone.io CI管道中将值从一个构建容器传输到另一个构建容器

时间:2017-10-13 04:56:52

标签: drone drone.io

我知道我可以将它写入已安装的主机文件系统,该系统将在多个构建容器之间共享。但是如何在像docker-plugin这样的无人机插件容器中使用该文件?

或者,有没有其他方法可以在构建步骤之间传递任意数据?也许通过环境变量?

这是无人机0.5

1 个答案:

答案 0 :(得分:3)

只能通过文件系统在构建步骤之间共享信息。环境变量不是一个选项,因为没有干净的方法在兄弟unix进程之间共享环境变量。

插件负责决定如何接受配置参数。通常,参数作为环境变量传递给插件,在yaml配置文件中定义。一些插件,特别是docker插件[1],能够从文件中读取参数。例如,docker插件将从存储库根目录中的.tags文件中读取docker标记,该文件可以即时生成。

pipeline:
  build:
    image: golang
    commands:
      - go build
      - echo ${DRONE_COMMIT:0:8} > .tags
  publish:
    image: plugins/docker
    repo: octocat/hello-world

并非所有插件都提供从文件中读取参数的选项。插件作者需要包含此功能。如果插件没有此功能,或者插件作者不打算实现该功能,您可以随时分叉并调整插件以满足您的确切需求。

[1] https://github.com/drone-plugins/drone-docker