xuexb / blog

前端小武的博客
https://xuexb.com
11 stars 4 forks source link

关于blog第一篇内容求教 #82

Closed ThoughtZer closed 2 years ago

ThoughtZer commented 5 years ago

您好,看到了你的博客的第一篇自动化部署的文章,有一个疑惑,不知道能够耽误你一点时间,解答一下~

jenkins执行了shell脚本里面为docker镜像打了tag,这里的tag是最终是如何被jenkins收集到的呢?是在生成tag的时候jenkins能够自动保存下来?个人想法是想通过tag来回滚,然而目前用的是docker的tag 不知道怎么读取获取我已经打过tag的列表。

xuexb commented 5 years ago

hi @ThoughtZer ,抱歉哈,最近工作业务比较忙~

你说的使用 Docker 去部署,我还没有搞,不过最近两天就要搞,你说的方案我研究下,有进展了我回复你~

ThoughtZer commented 5 years ago

@xuexb 客气,就是最近需要这样一个自动化工具,之前的手动太不可靠了,使用jenkins执行docker去部署目前就是在tag这个地方卡住了。可能jenkins原理还不清楚,只是会用,还得再看下文档~

xuexb commented 5 years ago

hi @ThoughtZer ,我感觉你想回滚使用 Git tag 回滚没有问题,但应该有个“选择的入口”,让实际操作者来选择回滚到哪个版本~

  1. 动态获取 Git tag 并回滚:jenkins基于分支发布和基于tag回滚 - 需要滚动的是,由于 Git tag 越来越多,可能需要执行 Shell 来删除“过期” tag
  2. 保存之前构建结果来快速回滚:使用 Jenkins 实现快速回滚 - 该方式好处在于回滚时不用编译,直接部署上线
ThoughtZer commented 5 years ago

@xuexb 嗯嗯,这种方法是之前已经实现的,git tag版本的~

目前我是通过docker仓库,获取到所有的tag,做一个页面去选择docker的tag list 去部署&回滚。

gitlab -> jenkins 编译推送 -> docker repo -> 一个页面控制tag list,线上机器拉取docker repo 镜像

xuexb commented 5 years ago

@ThoughtZer 你的意思也就是 Jenkins 只处理编译、发布到 Docker Registry ,然后在一个单独的页面去选择 Docker Tag 上线?那上线是 ssh 到机器执行还是自动在页面触发?

你这个套路跟我之前在某度差不多:

编译 -> 发布到产品库(类型 Docker Registry ) -> 发单(选择版本并发布,不需要上机器)。

ThoughtZer commented 5 years ago

@xuexb 是的。在一个单独的页面去选择 Docker Tag 上线,不用ssh到机器去执行~~

因为docker的tag获取,jenkins上好像是没有能力的~

你说的git tag 版本是之前我在某人车使用的~

看来思路大多都是这样一个流程😁~

xuexb commented 5 years ago

@ThoughtZer Jenkins 可以的,要相信她,哈哈哈~

比如使用 Jenkins Active Choices Plugin 动态参数插件,直接执行 Groovy Script 来获取 Docker Tag ~