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