在非 main 分支上使用 continuous deployment,真的好吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
JasonLaw
V2EX    git

在非 main 分支上使用 continuous deployment,真的好吗?

  •  
  •   JasonLaw Apr 15, 2021 via iPhone 2287 views
    This topic created in 1841 days ago, the information mentioned may be changed or developed.
    Supplement 1    Apr 15, 2021

    我提出这个疑问的原因是:我发现有人将CD当做一个测试自己代码是否OK的工具,自己还没有验证修改是否符合期望之前就提交 commit,push到远程仓库,通过CD,在测试环境验证。这样不仅仅会造成频繁 commit,造成n个“fix issue 1”,污染git的历史,并且会造成服务的频繁不可用。

    17 replies    2021-04-15 20:59:38 +08:00
    sutra
        1
    sutra  
       Apr 15, 2021
    main 分支是啥?
    GeruzoniAnsasu
        2
    GeruzoniAnsasu  
       Apr 15, 2021
    意思是内测版没资格部署,测试不需要线上测
    lyusantu
        3
    lyusantu  
       Apr 15, 2021
    @sutra github 默认主分支就叫 main 分支,再无 master ```
    sutra
        4
    sutra  
       Apr 15, 2021
    这个问题有歧义,main/master 分支不一定就对应的是 production environment,得先定义你用的是什么分支模型。
    PqZS58MLPBHFpEqm
        5
    PqZS58MLPBHFpEqm  
       Apr 15, 2021
    那万一这个 repo 有 prod branch 呢?这个 branch 是不是 dev or prod 是自己定义的,并不是约定俗成的。

    当然,在大多数 case 里 master branch 的确是 prod 。
    janxin
        6
    janxin  
       Apr 15, 2021 via iPhone
    我们都在 master 分支上搞~
    JasonLaw
        7
    JasonLaw  
    OP
       Apr 15, 2021
    @GeruzoniAnsasu #2 什么意思?不太明白。
    JasonLaw
        8
    JasonLaw  
    OP
       Apr 15, 2021
    @sutra #4 我指的 main 分支就是 production environment,公司的其他项目组有 dev 分支的概念(我这个小组不使用这种方式),也就是在测试环境运行的,那么 dev 分支有必要做 continuous deployment 吗?
    JasonLaw
        9
    JasonLaw  
    OP
       Apr 15, 2021
    @janxin #6 也就是只有 main 才做 continuous deployment ? merge request 被合并之后自动触发生产环境的部署?
    thet
        10
    thet  
       Apr 15, 2021
    我们用的 release-vX.Y.Z,咋就不行了,main/master 分支只是最新的代码
    JasonLaw
        11
    JasonLaw  
    OP
       Apr 15, 2021
    @thet #10 我在附言中补充了我提出这个疑问的原因。
    janxin
        12
    janxin  
       Apr 15, 2021
    @JasonLaw 不是,你提问的情况看上去开发时仅两个分支在工作:发布分支和开发分支;实际上如果分支还包含预发分支等其他功能分支的话,预发分支或其他需要部署的功能分支是可以作为 CD 部署的对象的,用作预发或者内部集成测试等功能需求。当然这跟开发分支需要进行持续部署没有关系。
    no1xsyzy
        13
    no1xsyzy  
       Apr 15, 2021
    1. 太频繁的 commit 污染可以用 squash 解决

    2. 每个 branch 应当建立单独的测试实例
    比如
    dev 分支有一个 dev.example[.]com 的记录
    然后 fix-issue-42 有一个 fix-issue-42.example[.]com 的记录
    内网泛域名索引,然后根据 Host 头响应

    这种做法倒没什么不对的;道听途说,过于庞大的项目根本不能在合理时间内本地编译,都是丢专门的编译服务器的,改两三行代码,然后编译一天。
    no1xsyzy
        14
    no1xsyzy  
       Apr 15, 2021
    但是我看着觉得你这是不是缺乏自动化测试?
    理应当不用 CD,CI 先跑通再说啊
    JasonLaw
        15
    JasonLaw  
    OP
       Apr 15, 2021
    @no1xsyzy #14 你说的对,完全没有自动化测试,很多修改都没有相应的测试代码。
    sutra
        16
    sutra  
       Apr 15, 2021
    就看你的 dev env 是否需要用来给别人用了,如果需要给别人用,那就 CD 呀。

    test env 肯定是要给别人用的,那肯定要 CD,不然手工搞多累。
    msg7086
        17
    msg7086  
       Apr 15, 2021
    服务频繁不可用?
    如果测试环境是共用的话,这样当然不好。如果是每个人自己的测试环境的话倒是没关系。

    至于频繁 commit,这算啥问题? Git 历史重写就好了。
    About     Help     Advertise     Blog     API     FAQ     Solana     872 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 22:26 PVG 06:26 LAX 15:26 JFK 18:26
    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