Drone CI 获取并使用构建元数据
Drone CI get and use build metadata
我在自托管系统中使用 Drone CI (0.7)。它已连接到 GitLab 和我的私人注册表并且运行良好!
不过,我想对 .drone.yml
文件做更多的事情。尤其是在将图像发布到注册表时。
文档展示了如何做 substitution,但没有解释这些变量是如何设置的。以下是文档中的示例:
pipeline:
docker:
image: plugins/docker
+ tags: ${DRONE_TAG}
这正是我想做的。在 repo(在发布分支上)创建一个 git 标签,并让该标签成为我的 Docker 图像的标签。
我试过 git tag -a v1.0 -m "Initial release"
然后 git push origin v1.0
。当我为存储库设置 Tag Hooks
时,Drone CI 构建开始,但是当构建完成并将图像发布到注册表时,标签设置为 latest
。推送常规代码更改提交时也会发生这种情况。
这是需要使用 CLI 完成的事情,还是我的 .drone.yml
文件(在下面发布)中遗漏了什么?它 看起来 就像我需要设置的环境变量,但是在提交代码以开始构建之前必须设置它(我假设)似乎很奇怪...
感谢任何帮助!
pipeline:
build:
image: node:latest
commands:
- npm install
- npm test
docker:
image: plugins/docker
repo: private.registry.com/tester
registry: private.registry.com
secrets: [ docker_username, docker_password ]
tags: ${DRONE_TAG}
when:
branch: release
实际上,您的 docker
步骤只会在您将新提交推送到分支 release
时触发,您应该使用标记事件。
你应该有一些类似的配置
tags:
- latest
- ${DRONE_TAG##v}
when:
event: tag
注意 ${DRONE_TAG##v} 将去除前缀 v
,因为您正在命名您的标签 v1.0
无人机会将其解析为
tags:
- latest
- 1.0
when:
event: tag
我在自托管系统中使用 Drone CI (0.7)。它已连接到 GitLab 和我的私人注册表并且运行良好!
不过,我想对 .drone.yml
文件做更多的事情。尤其是在将图像发布到注册表时。
文档展示了如何做 substitution,但没有解释这些变量是如何设置的。以下是文档中的示例:
pipeline:
docker:
image: plugins/docker
+ tags: ${DRONE_TAG}
这正是我想做的。在 repo(在发布分支上)创建一个 git 标签,并让该标签成为我的 Docker 图像的标签。
我试过 git tag -a v1.0 -m "Initial release"
然后 git push origin v1.0
。当我为存储库设置 Tag Hooks
时,Drone CI 构建开始,但是当构建完成并将图像发布到注册表时,标签设置为 latest
。推送常规代码更改提交时也会发生这种情况。
这是需要使用 CLI 完成的事情,还是我的 .drone.yml
文件(在下面发布)中遗漏了什么?它 看起来 就像我需要设置的环境变量,但是在提交代码以开始构建之前必须设置它(我假设)似乎很奇怪...
感谢任何帮助!
pipeline:
build:
image: node:latest
commands:
- npm install
- npm test
docker:
image: plugins/docker
repo: private.registry.com/tester
registry: private.registry.com
secrets: [ docker_username, docker_password ]
tags: ${DRONE_TAG}
when:
branch: release
实际上,您的 docker
步骤只会在您将新提交推送到分支 release
时触发,您应该使用标记事件。
你应该有一些类似的配置
tags:
- latest
- ${DRONE_TAG##v}
when:
event: tag
注意 ${DRONE_TAG##v} 将去除前缀 v
,因为您正在命名您的标签 v1.0
无人机会将其解析为
tags:
- latest
- 1.0
when:
event: tag