1. 程式人生 > 其它 >drone使用git tag作為映象tag

drone使用git tag作為映象tag

官方自動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}