k8w.io
Git/Docker Tag的使用
2017-11-20作者:k8w

先说作用和使用场景

Git Tag的作用

  • 重要的位置,做个标记,纯粹为了好找。
  • CommitId可以实现一样的目的,只是不好找。

Docker Tag的作用

  • 多版本并存
  • 快速回滚
  • 没Tag的话,jenkins重新build一下一样的

得出使用场景的结论

  • Git Tag:开发过程的重要阶段留下标记(如迭代、版本、转测试)
  • Docker Tag:发布正式环境的时候留个Tag,方便快速回滚

再说使用方法

版本号

A.B.C.D

  • A:大版本,革命性的,颠覆性的,不向后兼容的
  • B:特性版本,单周/双周迭代
  • C:优化版本,BUG修复,小优化等
  • D:开发阶段内部代号
    例如
  • 2.1.0.20161027001
  • 2.1.0.20161027Release

建议

  • A,B,C保持国际惯例
  • D,没有繁琐的测试流程,且以省时为原则,建议从0开始,构建一次+1
  • 如 迭代0.6.0
  • 开发完成,交付验收,发测试环境 0.6.0.0
  • 发现几个BUG,修复,发测试环境 0.6.0.1
  • 又发现几个优化点,再改好,发测试环境 0.6.0.2
  • 没问题了,可以发布,发布0.6.0.2
  • 故对一个发布了的外部版本,最新的一个Tag Name就是Release版本

Git Tag

打Tag

  • Git目录,右键>TortoiseGit>Create Tag
  • 一般在迭代开发完成时打Tag,Tag Name为版本号
  • Git目录,邮件>Git Sync>Push tags

删除Tag

  • 先删本地
  • git tag -d Tag名
  • 或右键>TortoiseGit>Switch/Checkout,在Branch浏览器里可以删
  • 再删远端
  • TortoiseGit尚未发现此功能,Gitbucket也未发现此功能
  • git push origin :branch-name

改Bug

  • 如果有未提交的修改,则先提交;如果不想提交,则先Stash Save,回头再Stash Pop
  • Git目录,右键>TortoiseGit>Switch/Checkout
  • 切换到要改BUG的TAG
  • 同时建一个新的分支(如果没有的话),分支名为 Branch_A.B.C
  • 改好,提交
  • 再发测试环境之前,再打一个新的TAG
  • 合并回主干
  • 在GitBucket从分支发起Pull Request
  • 或在本地Merge后提交
  • Switch 到 master
  • 右键 Git > Merge
  • Strategy一般选resolve
  • Merge过的Branch,可以在GitBucket中删除

Docker Tag

  • 发布到正式环境的同时,打一个Tag,Tag名是 A.B.C
  • 发布到非正式环境,Tag一律用latest

Jenkins设置

  • 参数化构建过程 -> Git Parameter
  • Parameter Type = Branch or Tag
  • 假设参数名是TAG_NAME
  • 正式环境发布脚本:新增String Parameter:DOCKER_TAG_NAME,默认值latest
  • 源码管理,Branches to build = ${TAG_NAME}
  • Docker选项,Tag=${TAG_NAME}
  • Build with parameters
  • 选Tag或Master,回归Bug时也可构建 Branch_A.B.C
  • 若是正式环境,则还需输入DOCKER_TAG_NAME,为A.B.C外部版本号

一些问题

Git里删除的Tag,在Jenkins有时还会出现,不知原因。

(正文完)
留言(0条)
发表新留言
您的大名:
必填
电子邮箱:
不公开,仅用于向你发送回复