无人机CI获取并使用构建元数据

时间:2017-09-06 00:51:51

标签: drone drone.io

我在自托管系统中使用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

1 个答案:

答案 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