姑且算是一个 CI 实践(多图慎点) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
mritd
V2EX    程序员

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

  •  3
     
  •   mritd
    mritd 2018-06-20 11:23:00 +08:00 4610 次点击
    这是一个创建于 2676 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看见有人在讨论 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

    gitflow

    提交格式规范后生成 CHANGELOG

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

    changelog

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

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

    ci

    IM 对接

    im

    目前缺失的:

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

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

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

    什么网络影响 (_`)?
    gitlab ce 私有化部署,然后再部署一个 gitlab runner 链接就行啊,都是内网私有化啊
    gamexg
        11
    gamexg  
       2018-06-20 12:39:26 +08:00 via Android
    @mritd docker 基础镜像、apt 包、pip 库 等等,只能一个一个解决,挺烦。
    mritd
        12
    mritd  
    OP
       2018-06-20 13:26:10 +08:00 via iPhone
    @gamexg 这个没麻烦啊,基础镜像做好了就行了,dockerfile 写好 有 cache 的,https://mritd.me/2017/11/12/ci-cd-dockerfile/
    ShineSmile
        13
    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
        14
    mritd  
    OP
       2018-06-20 13:56:31 +08:00
    @ShineSmile #13 runner 直接调用脚本应该是可以的,不过我记着 .net 后端项目好像可以在 docker 里跑,然后扔在 linux 上
    ShineSmile
        15
    ShineSmile  
       2018-06-20 14:10:41 +08:00
    @mritd dotnet core 可以的。
    dotnet fx 只能运行在 windows 的 docker 中。
    例如 nano server

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

    开发新功能用 feature 做 commit tag,处理生产问题用 hotfix tag,是吧?
    那开发时,处理新 feature 的 bug,提交时应该用什么 tag 呢?
    mritd
        19
    mritd  
    OP
       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
        20
    mritd  
    OP
       2018-06-20 15:20:37 +08:00
    @feiyuanqiu 其实 gitflow 目前没有完全的统一标准,这东西存在的意义就是对 提交修改清晰化、测试部署流程化,你只要在几大模型中找寻出适合你的就可以
    feiyuanqiu
        21
    feiyuanqiu  
       2018-06-20 15:26:48 +08:00
    @mritd 不好意思,刚才提问的时候走神了,名称打错了,上一条里面的 `hotfix` 应该是 `fix`

    我的疑问主要是因为在你这套流程里面,会用 git-chglog 自动根据 commit message 生成变更说明,所以就比较纠结处理新 feature 的 bug 的 commit message 的 subject 的命名:

    如果用 feat 的话,会导致变更说明里的 features 重复;
    如果用 fix 的话,其实它们也并不是生产上的问题,没有必要把开发过程中的问题也写到 change log 里吧?
    mritd
        22
    mritd  
    OP
       2018-06-20 15:53:21 +08:00   1
    @feiyuanqiu #21 这个是个粒度问题,如果你的提交以功能为单位,那么当一个功能 ok 以后应当放入 测试环境测试,这时候有问题进行 fix 我感觉在 CHANGELOG 里是没什么问题的;如果以修改为单位提交 那么出现在 CHANGELOG 里会有点多,可以考虑用其他的;

    那个 CHANGELOG 生成工具可以自己定义的

    还有就是实际上这个 CHANGELOG 应该是面向开发人员的,我感觉多点少点无所谓,我只是想通过看到每个版本之间我们开发变动了什么东西;而对于类似 app 发版啥的这种 CHANGELOG 肯定是手写一个符合普通大众理解的
    gamexg
        23
    gamexg  
       2018-06-20 20:33:36 +08:00 via Android
    @mritd 恩,docker 单独使用有 cache。
    不过 gitlab runner 时没 cache 了,我记得好像有命令能开启。
    不过直接把 runner 放到国外解决了所有问题,没在细看。
    dexterzzz
        24
    dexterzzz  
       2018-06-20 21:59:18 +08:00
    CI,CD 去看下 TFS,VSTS 什么才是业界最强
    mritd
        25
    mritd  
    OP
       2018-06-20 23:01:12 +08:00
    @dexterzzz #24 这个贴子只是我对 opnsource CI 整理的一套工具链,如果硬对比商业版工具我敢保证有很多比它们还牛逼的,就算是商业版也无法做到每个方面都 ok,比如 提交规范、工作流的建立
    johnnie502
        26
    johnnie502  
       2018-06-21 7:35:55 +08:00
    @dexterzzz 又在日常引战
    twistedmeadows
        27
    twistedmeadows  
       2018-06-22 00:48:18 +08:00 via Android
    感谢楼主。最近正好遇到工作上协同缺乏规范的问题,版本控制有点混乱。学习了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2632 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 12:48 PVG 20:48 LAX 05:48 JFK 08:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86