先说作用和使用场景
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有时还会出现,不知原因。
(正文完)