V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tibifide
V2EX  ›  问与答

jenkins pipeline + gitlab

  •  
  •   tibifide · 2021-02-01 15:40:32 +08:00 · 1036 次点击
    这是一个创建于 1177 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:公司开发用的是 java,项目 A ;测试接口自动化用的 python,项目 B 。打算做持续集成,期望达到的效果是任何一名开发人员提交代码后会去触发 pipeline 的执行,pipeline 就包含两步 build + test,然后将 test 的失败结果通知到开发,达到一种快速反馈的效果。 有个问题:A 开发在某次迭代的时候开发了一些功能,比如 F1 、F2 、F3,push 代码的时候,如何只执行 F1 、F2 、F3 对应接口测试呢? 不能执行全量的测试,因为其他开发人员可能有些 function 还没有开发完成,但是这时测试代码已经开发完成了,这个时候去执行未开发完成的功能肯定跑不通。

    12 条回复    2021-02-02 09:53:27 +08:00
    themostlazyman
        1
    themostlazyman  
       2021-02-01 16:00:27 +08:00
    感觉 dev 环境不用跑测试,谁提交了代码不应该自己跑通了吗?提测前整体跑通一遍不更好吗?
    mikuazusa
        2
    mikuazusa  
       2021-02-01 16:05:01 +08:00
    Jenkins 中的项目编译启动脚本和测试接口自动化脚本,增加 1 个参数变量记录 F1 、F2 、F3,然后 2 个脚本根据这个参数来执行对应的模块化构建和接口测试即可
    th00000
        3
    th00000  
       2021-02-01 16:11:24 +08:00
    场景不成立:
    如果是基于主干开发, 那么所有被提交的代码都应该是跑通的, 不应该有 block 主干的因素存在
    如果是基于分支开发, 那么测试仅跑当前自己的分支即可, 也不会出现 bolck 测试的因素存在
    tibifide
        4
    tibifide  
    OP
       2021-02-01 16:58:01 +08:00
    @themostlazyman 跟开发人员沟通了下,dev 环境的确不适合跑接口自动化,原因是开发人员在提交的时候可能只是定义一个接口的名称,具体的内容还没有进行开发。
    tibifide
        5
    tibifide  
    OP
       2021-02-01 17:00:56 +08:00
    @th00000 基于主干进行开发,所有被提交的代码不一定能跑通,就像开发人员告诉测试人员可以进行测试了,但是测试环境仍有多个接口调不通的这个场景
    th00000
        6
    th00000  
       2021-02-01 17:09:11 +08:00
    @tibifide #5
    基于主干开发, 所有提交的东西都不应该有已知的阻塞项目的事情发生, 如果有, 就是模块切分不好, 或者开发人员有问题, bug 是不可避免的, 但是我们讨论的应该不是 bug 的问题
    感觉你们方法论出了问题, 你们在用一个看似正确的工具去解决一个错误的方法论, 看起来别扭的不行
    th00000
        7
    th00000  
       2021-02-01 17:11:03 +08:00
    具体方法论可以看这里 [Trank based develepment]( https://cloud.google.com/solutions/devops/devops-tech-trunk-based-development)
    tibifide
        8
    tibifide  
    OP
       2021-02-01 17:26:31 +08:00
    @mikuazusa 我在想有没有这样一种机制,开发人员在 commit 的时候如果加上了 tag,就会通知到 jenkins 去执行脚本,如果没有加 tag,就不通知给 jenkins 。然后接口自动化时可以根据 tag 去执行对应的用例。
    retanoj
        9
    retanoj  
       2021-02-01 17:30:32 +08:00
    @tibifide 条件触发肯定是能做到的。
    不过 dev 环节就跑测试的话,那也只能是单测了吧
    tibifide
        10
    tibifide  
    OP
       2021-02-01 17:46:19 +08:00
    @retanoj 就是没有搞清楚持续集成是在 dev 环境跑单测,还是 dev 环境开发提交代码的时候单元测试和接口测试同时跑,接口测试介入的时机
    retanoj
        11
    retanoj  
       2021-02-01 18:15:30 +08:00
    @tibifide
    额,我好像在其他地方问过类似的问题。
    对于开发过程的 push,可以跑单测
    对于合并入主分支的 Merge,Merge 之前跑集成测试,测试结果反馈给 Merge 审批人
    mikuazusa
        12
    mikuazusa  
       2021-02-02 09:53:27 +08:00
    @tibifide 都可以啊,Jenkins 加一个触发器 trigger 就行了,使用 git 监控插件监控特定 tag 推送
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3180 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:25 · PVG 22:25 · LAX 07:25 · JFK 10:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.