我在自托管系统中使用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
答案 0 :(得分:0)
实际上只有在将新提交推送到分支docker
时才会触发release
步骤,您应该使用标记事件。
哟应该有一些类似的配置
tags:
- latest
- ${DRONE_TAG##v}
when:
event: tag
注意$ {DRONE_TAG ## v}将删除前缀v
,因为您正在命名您的代码v1.0
无人机会将其解析为
tags:
- latest
- 1.0
when:
event: tag