如何在 drone.io CI 管道中将值从一个构建容器传输到另一个构建容器
How to transfer a value from one build container to another in drone.io CI pipeline
我知道我可以将它写入挂载的主机文件系统,该文件系统将在多个构建容器之间共享。但是我怎样才能在像 docker-plugin 这样的无人机插件容器中使用该文件?
或者,有没有其他方法可以在构建步骤之间传递任意数据?也许通过环境变量?
这是无人机0.5
只能通过文件系统在构建步骤之间共享信息。环境变量不是一个选项,因为没有干净的方法在兄弟 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
并非所有插件都提供从文件中读取参数的选项。是否包含此功能取决于插件作者。如果插件没有此功能,或者插件作者不打算实现,您可以随时分叉和调整插件以满足您的确切需求。
我知道我可以将它写入挂载的主机文件系统,该文件系统将在多个构建容器之间共享。但是我怎样才能在像 docker-plugin 这样的无人机插件容器中使用该文件?
或者,有没有其他方法可以在构建步骤之间传递任意数据?也许通过环境变量?
这是无人机0.5
只能通过文件系统在构建步骤之间共享信息。环境变量不是一个选项,因为没有干净的方法在兄弟 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
并非所有插件都提供从文件中读取参数的选项。是否包含此功能取决于插件作者。如果插件没有此功能,或者插件作者不打算实现,您可以随时分叉和调整插件以满足您的确切需求。