You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drone 0.8版本:如何实现按Git分支名自动为Docker镜像打标签?

解决Drone 0.8 Docker插件按Git分支自动打标签的问题

我之前刚好帮团队搞定过这个需求,Drone 0.8的Docker插件默认的auto_tag确实只对Tag触发的构建生效,分支构建只会打latest,所以得换个思路实现分支自动打标签,分享两个亲测可行的方案:

方案1:直接用Drone内置环境变量手动指定标签

禁用auto_tag,然后利用Drone提供的DRONE_BRANCH环境变量直接生成标签,配置示例如下:

pipeline:
  build-and-push:
    image: plugins/docker
    repo: your-docker-repo/your-image-name
    tags: ${DRONE_BRANCH}
    auto_tag: false
    # 按需添加 registry、username、password 等认证配置

如果你的分支名包含斜杠(比如feature/user-auth),Docker标签虽然支持斜杠,但有些场景可能不太友好,你可以用Shell替换语法把斜杠换成横杠:

tags: ${DRONE_BRANCH//\//-}

这样feature/user-auth就会变成feature-user-auth标签。

方案2:区分Master分支与其他分支(兼顾latest标签)

如果希望Master分支继续打latest,其他分支打对应分支名,可以用Drone的条件判断拆分两个Docker步骤:

pipeline:
  # 非Master分支打分支名标签
  docker-branch:
    image: plugins/docker
    repo: your-docker-repo/your-image-name
    tags: ${DRONE_BRANCH//\//-}
    auto_tag: false
    when:
      branch:
        exclude: master
  # Master分支打latest标签
  docker-master:
    image: plugins/docker
    repo: your-docker-repo/your-image-name
    tags: latest
    auto_tag: false
    when:
      branch: master

补充说明

Drone 0.8的Docker插件auto_tag逻辑是:只有当构建由Git Tag触发时,才会自动把Tag名作为镜像标签;分支触发的构建默认只会生成latest,所以要实现分支标签必须手动指定tags参数并关闭auto_tag。

内容的提问来源于stack exchange,提问作者Jay Cee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:50:39