V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
dandankele
V2EX  ›  git

如何看待 CI 持续集成产生的大量 tag?

  •  
  •   dandankele · 2019-07-10 14:55:21 +08:00 · 6409 次点击
    这是一个创建于 1724 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在研究 CI 由于公司业务性质,网站每天可能会有数十次的更新上线,而每次上线都会通过 CI 自动化的 release 打上语义化的 tag,长期下来产生的 tag 非常的多,担心后续对 git 仓库的管理和性能产生的影响。

    不禁思考,每次 git 提交都有 commit id,为何还要 tag ?打这么多 tag 是不是太浪费了

    25 条回复    2019-07-11 14:21:52 +08:00
    zealic
        1
    zealic  
       2019-07-10 14:59:35 +08:00   ❤️ 1
    对性能影响不大,语意化及可追溯更重要。
    tuxz
        2
    tuxz  
       2019-07-10 16:31:38 +08:00
    也可以使用 commit id 的前几位作为标签
    miaoxia
        3
    miaoxia  
       2019-07-10 17:34:28 +08:00
    每天数十次的上线肯定是有问题的
    每次上线打 tag 这样的行为是对的
    commid id 和 tag 完全不是一个纬度的东西
    建议去了解下 git flow 工作流,分别了解下开发、提测、上线及修复不同 bug 的处理流程
    打 tag 不会对性能造成影响,无意义的 co 二进制文件才会
    zhuweiyou
        4
    zhuweiyou  
       2019-07-10 18:40:42 +08:00
    每天上线 10 次。。。
    chinesestudio
        5
    chinesestudio  
       2019-07-10 18:43:37 +08:00 via Android
    我就好奇啥业务
    misaka19000
        6
    misaka19000  
       2019-07-10 18:45:43 +08:00
    每天上线数十次?这种上线频率肯定是有问题的
    clino
        7
    clino  
       2019-07-10 18:47:04 +08:00 via Android
    可以将 sha1 信息存在一个专门的 git 里来记录历史
    mercury233
        8
    mercury233  
       2019-07-10 18:51:32 +08:00
    - bash -c "git tag -d latest ; exit 0"
    - git tag latest HEAD
    - git push -f origin latest
    mikicomo
        9
    mikicomo  
       2019-07-10 19:08:40 +08:00
    每天上线十次?是开发自己有权限发版么?如果是运维,不怕被打死?
    bkmi
        10
    bkmi  
       2019-07-10 19:15:51 +08:00 via Android
    多业务线并行的情况下每天上线数十次真的挺正常的,不过可以考虑拆分一下
    petelin
        11
    petelin  
       2019-07-10 19:22:54 +08:00 via iPhone
    我们大概有 200 多万 tag 吧
    Torpedo
        12
    Torpedo  
       2019-07-10 21:15:31 +08:00
    你这上线太多了,不要怪 ci
    mywaiting
        13
    mywaiting  
       2019-07-10 23:18:03 +08:00   ❤️ 2
    依稀记得先前看 coolshell 的 blog,里面有说 amazon 的基础设施每几秒钟就有一次部署?

    每天线上能滚动部署数十次,侧面说明你们的线上环境 /流量转移 /AB 测试都做得挺好的,应该感谢有这么好的开发部署流程啊

    git tag 多少无所谓的,我个人的项目都有好几百个 tag,回滚比 comment id 要方便好多

    好像记得有一种利用 git tag 来进行灰度发布,引入部分流量开启部分 feature 测试的方法,大体是这个思路,我没有实践过,贴主可以去自己搜索看看
    ericgui
        14
    ericgui  
       2019-07-11 00:01:20 +08:00
    @mikicomo 全都自动化了,没什么了不起的
    xiaket
        15
    xiaket  
       2019-07-11 06:37:55 +08:00
    为什么上面这么多同学认为每天上线十几次是坏事的?
    wenzhoou
        16
    wenzhoou  
       2019-07-11 06:53:00 +08:00 via Android
    @xiaket 因为上线是个很严肃的事情需要审查。而且因为上线频繁,有可能导致大量 bug 不知道到底在什么版本会重现,相当于定时炸弹。
    ericgui
        17
    ericgui  
       2019-07-11 08:20:36 +08:00
    @wenzhoou 全自动的嘛,从 push 到 run test,到 build 到 deploy,一条龙自动化

    能够做到这个,理论上你要写很多测试用例的,尤其是新加 feature 的时候,要写很多测试用例。所以其实一般这么做,显然都是 master branch 做这一套,有权限管理,只能有权限的人把自己的分支合并到 master。
    Fule
        18
    Fule  
       2019-07-11 08:23:16 +08:00
    我也考虑过这个问题。不过一个 tag 对 git 来说也就是多几个字节的问题吧,所以至少中短期内应该不是问题。最后大不了写个程序从最早的 tag 开始删一波~~
    airfling
        19
    airfling  
       2019-07-11 08:25:14 +08:00
    你把每天上线十次压缩为两周上线一次,你看看还会不会有问题
    apex
        20
    apex  
       2019-07-11 08:40:53 +08:00 via iPhone
    楼上身体不好的男人们,纷纷对一天十次表示惊讶😂
    qq976739120
        21
    qq976739120  
       2019-07-11 09:13:15 +08:00
    @miaoxia 不懂就问! commit id 和 tag 在发布回滚的时候,主要区别什么啊,都可以根据他们来做啊?为什么是两个维度的东西呢
    yidinghe
        22
    yidinghe  
       2019-07-11 09:16:40 +08:00 via Android
    怎么会上线那么频繁,应该将内容动态化。
    shawndev
        23
    shawndev  
       2019-07-11 09:22:22 +08:00
    工具能解决流程的效率问题,人能解决工具的效率问题。所以,千万千万别因为楼上的回复就觉得一天十几次上线是错误的,经过完整测试的改动,一天几百次上线我认为也是可以接受的。更何况上线可能是灰度环境和准生产环境。
    GuangXiN
        24
    GuangXiN  
       2019-07-11 10:04:40 +08:00 via Android
    tag 本来就是人类可读的 commit id 别名
    dandankele
        25
    dandankele  
    OP
       2019-07-11 14:21:52 +08:00
    @shawndev 我感觉已经被绕晕了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5312 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:08 · PVG 17:08 · LAX 02:08 · JFK 05:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.