官方自动tag
plugin/docker 已支持自动标签,使用方法如下
steps: - name: docker image: plugins/docker settings: repo: foo/bar auto_tag: true
其中的auto_tag: true就是启用自动tag
如果是git tag触发的构建,则会自动使用git tag作为镜像tag, 并且会自动分割主版本号和副版本号
如git tag是1.0.0 则镜像tag为[1
, 1.0
, 1.0.0
]
如git tag是1.0.0-rc.1 则镜像tag为1.0.0-rc.1
如果是通过push触发且分支是默认分支(如master或main), 则镜像tag为latest
配置tag后缀
steps: - name: docker image: plugins/docker settings: repo: foo/bar auto_tag: true auto_tag_suffix: linux-amd64
auto_tag_suffix: linux-amd64 表示镜像tag后缀为linux-amd64
自定义tag规则
自动tag如果不能满足则需要自定义tag规则
steps: - name: docker image: plugins/docker settings: repo: foo/bar tags: ${DRONE_TAG##v}
${DRONE_TAG##v}就表示从DRONE_TAG中移除v, 如git tag是v1.0.0 则镜像tag是1.0.0 移除了v
从上一篇文章了解到了如何通过git tag触发构建, 这里就可以搭配使用
steps: - name: docker image: plugins/docker settings: repo: foo/bar tags: ${DRONE_TAG##FileService-}
trigger:
ref:
- ref/tags/FileService-*
git tag 为FileService-1.0.0 触发构建, 镜像tag为1.0.0
drone目前支持的字符串操作来自于gnu的shell parameter expansion
${parameter^} 首字母大写 ${parameter^^} 整个字符串转为大写 ${parameter,} 首字母小写 ${parameter,,} 整个字符串转为小写 ${parameter:position} 从position开始截取字符串 从0开始计数 如 abcd:2 结果就是cd ${parameter:position:length} 从position开始截取length长度 ${parameter#substring} ${parameter##substring} ${parameter%substring} ${parameter%%substring} ${parameter/substring/replacement} ${parameter//substring/replacement} ${parameter/#substring/replacement} ${parameter/%substring/replacement} ${#parameter} ${parameter=default} ${parameter:=default} ${parameter:-default}
其中我们使用的 ${DRONE_TAG##v} 就是其中的 ${parameter##substring}