姑且算是一个 CI 实践(多图慎点)

2018-06-20 11:23:00 +08:00
 mritd

看见有人在讨论 git、svn 哪个好,都喷起来了;当然我是选择 git 的,svn 可能人家也有成熟的解决方案,这里我只是想单纯的给出一个我们目前 git 的方案;如果有其他大佬有更好的方案欢迎提出。(本帖禁止鄙视链、无脑喷)

主要涉及: GitLab、GitFlow、Mattermost、Docker、Kubernetes

先上几张图:

GitFlow 负责保证提交格式、分支名称足够规范

refs: https://mritd.me/2017/09/05/git-flow-note/

refs: https://github.com/mritd/gitflow-toolkit

这张图片保存后总是自动加空格 https://i.imgur.com/vcNUo3h.gifv mmp

提交格式规范后生成 CHANGELOG

refs: https://github.com/git-chglog/git-chglog

不同分支名称、多分支等用于 CI 触发(GitLab CI),CI 已经对接了 Kubernetes

refs: https://mritd.me/2017/11/28/ci-cd-gitlab-ci/

IM 对接

目前缺失的:

CI Bot: 正在开发中,以前的基于 Hubot 造过一个,不过不喜欢 node,准备对接 tg 用 go 重新造一个

其他的还有 sentry 什么乱七八糟的就不说了

4222 次点击
所在节点    程序员
27 条回复
mritd
2018-06-20 11:31:18 +08:00
Immortal
2018-06-20 11:33:30 +08:00
一直也想有这么一个实践 想问下楼主学习和入门从何开始 还有楼主觉得有用的资料和链接能分享么
mritd
2018-06-20 11:34:30 +08:00
@Immortal #2 上面 refs 已经有相关链接
mritd
2018-06-20 11:35:23 +08:00
@Livid imgur markdown gifv 格式为毛线 总是在链接( https://xxx) 前面加一个空格?我改成 gif 就好了
mritd
2018-06-20 11:35:52 +08:00
哇.....上面的回复又加了一个
feiyuanqiu
2018-06-20 11:38:01 +08:00
赞赞赞
ShineSmile
2018-06-20 11:49:24 +08:00
gitlab 的 runner 用过一段时间 还是很爽的
git 成也分支 败也分支 svn 没有分支只有目录
mritd
2018-06-20 11:50:40 +08:00
@ShineSmile #7 runner daocker 启动 还是挺舒服的,然后 build 也走 docker 容器,不过 cache 稍微有点麻烦
gamexg
2018-06-20 12:09:17 +08:00
请教 gitlab runner 是部署在国内还是国外?
国内受网络影响很难用,有什么比较好的解决办法吗?
mritd
2018-06-20 12:18:53 +08:00
@gamexg #9 黑人问号.gif

什么网络影响 (´・_・`)?
gitlab ce 私有化部署,然后再部署一个 gitlab runner 链接就行啊,都是内网私有化啊
gamexg
2018-06-20 12:39:26 +08:00
@mritd docker 基础镜像、apt 包、pip 库 等等,只能一个一个解决,挺烦。
mritd
2018-06-20 13:26:10 +08:00
@gamexg 这个没麻烦啊,基础镜像做好了就行了,dockerfile 写好 有 cache 的,https://mritd.me/2017/11/12/ci-cd-dockerfile/
ShineSmile
2018-06-20 13:53:14 +08:00
@mritd 哈哈 我是做.NET Fx 的
gitlab 对我这边的生态唯一一个问题就是不支持直接部署在 windows 上。只能弄个虚拟机凑合一下
当然,runner 是跨平台的。
另外需要注意 runner 的脚本要防注入,控制好分支的权限

当时是通过 gitlab 接触到的 CI 和 CD 以及容器甚至 DevOps
很喜欢这个产品,非常适合开放的团队使用
后面才接触到 jenkins
travis 和 appvenyor 也都用过
感觉还是直接拿工具链工具写脚本不受束缚最舒服

遗憾的是现在回到了巨硬的怀抱
auzre portal 上点点点
Visual Studio 一键发布
失去了对脚本的研究动力
可能还是团队规模太小吧
mritd
2018-06-20 13:56:31 +08:00
@ShineSmile #13 runner 直接调用脚本应该是可以的,不过我记着 .net 后端项目好像可以在 docker 里跑,然后扔在 linux 上
ShineSmile
2018-06-20 14:10:41 +08:00
@mritd dotnet core 可以的。
dotnet fx 只能运行在 windows 的 docker 中。
例如 nano server

好像巨硬的 service fabric 是做 windows 容器调度的。
遗憾的是同样没细研究过……
lt450196683
2018-06-20 14:20:27 +08:00
学习,嵌入式的环境。。docker 可以模拟么。。例如 wince/Android/mcu。。
ShineSmile
2018-06-20 14:22:13 +08:00
@lt450196683 LXC 了解一下?
feiyuanqiu
2018-06-20 15:10:44 +08:00
@mritd 关于 Angular git commit message,我有一个疑问想请教一下,

开发新功能用 feature 做 commit tag,处理生产问题用 hotfix tag,是吧?
那开发时,处理新 feature 的 bug,提交时应该用什么 tag 呢?
mritd
2018-06-20 15:19:01 +08:00
@feiyuanqiu #18 我目前的做法是,commit message 中对于修复性提交全部走 `fix(scope): subject` 这种格式;分支名称上,对于新功能应当从 develop checkout 新分支,且以 `feat/xxxx` 形式命名,只会合并到 develop 分支;对于线上问题紧急修复,从 master 创建分支,以 `hotfix/xxxx` 命名,ok 后同时合并到 master 与 develop ;最终原则是 master 要时刻保持和生产一致,develop 作为开发日常修改
mritd
2018-06-20 15:20:37 +08:00
@feiyuanqiu 其实 gitflow 目前没有完全的统一标准,这东西存在的意义就是对 提交修改清晰化、测试部署流程化,你只要在几大模型中找寻出适合你的就可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/464342

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX