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

请教熟悉 jenkins 的大佬 能否构建一个 jenkins 项目 当 gitlab 上 A 仓库的代码更新后 自动拉取 B 仓库的代码然后执行构建

  •  
  •   kblacksheep · 2019-03-16 21:23:24 +08:00 · 2166 次点击
    这是一个创建于 2070 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大概场景是这样:开发的代码放在 A 仓库,当开发推了新代码到仓库上后,触发 Jenkins 项目的 WebHook,然后拉去位于 B 仓库的测试代码执行一遍,B 仓库的代码测试通过后,再执行后续操作

    14 条回复    2019-03-17 12:02:07 +08:00
    a663
        1
    a663  
       2019-03-16 22:15:03 +08:00 via Android   ❤️ 1
    在 jenkins 里面 clone B 的代码,执行
    LeoQ
        2
    LeoQ  
       2019-03-16 23:21:23 +08:00 via iPhone
    一楼的方案没毛病,不过有没有考虑把测试代码和开发代码放一个库里?
    因为你这样设置的话,需要配置两个库的关联关系,除非测试库的代码都是一样的。
    kblacksheep
        3
    kblacksheep  
    OP
       2019-03-16 23:37:53 +08:00 via Android
    @LeoQ 只是一种想法 因为现在公司里开发人员的代码和测试人员的代码是分开来维护的 在这方面的协作不算很多
    awanabe
        4
    awanabe  
       2019-03-17 00:36:25 +08:00
    把 B 项目作为子模块放在 A 项目里面咯..这样 repo 是独立的
    WispZhan
        5
    WispZhan  
       2019-03-17 00:40:23 +08:00 via Android
    pipeline。
    Jenkins pipeline 或者 gitlab pipeline
    反正都是写脚本就是。
    Mithril
        6
    Mithril  
       2019-03-17 01:04:28 +08:00   ❤️ 1
    @kblacksheep 直接用 Pipeline,或者用 TC 的话配置 Dependencies。
    但不管哪种都不是很好,建议直接用 Gradle 或者其他 Build Automation 工具,在这些工具里面配置 Task 一类的东西去执行 Clnoe B,编译并测试的工作。
    总而言之,尽量少把这些 Build 流程配置写在 CI 工具上。CI 最好只是单纯的触发器,拉代码,然后执行你的 Build Automation 脚本。而你的脚本应该能完整的执行构建,测试甚至发布功能。
    tomczhen
        7
    tomczhen  
       2019-03-17 01:11:32 +08:00
    做两个 job,A 仓库触发 B Job,然后 B Job 执行后根据条件触发 A Job。
    ymj123
        8
    ymj123  
       2019-03-17 01:54:29 +08:00 via Android
    pipeline 可以调用 shell 脚本,Python 脚本。想怎么写都行啊。
    ymj123
        9
    ymj123  
       2019-03-17 01:55:13 +08:00 via Android
    pipeline 自己也可以,groovy 写。
    also24
        10
    also24  
       2019-03-17 02:42:35 +08:00
    有点儿懵,这个好像直接用最简单的模式就行吧 =。= 似乎连 Pipline 都用不到额?

    在 git 仓库 A,配置 webhook,指向 jenkins 上相应 job 的 webhook 地址;
    然后 jenkins 上相应 job 的 “源码管理” 部分配置为 B 仓库不就可以了嘛?

    also24
        11
    also24  
       2019-03-17 03:00:52 +08:00   ❤️ 1
    补充一下,如果是需要同时用到 A 仓库和 B 仓库的代码,就需要自己写 Pipeline 了。

    如果实在懒得写,其实也可以通过插件来达到简单的拖多仓库源码的目的~~~
    https://wiki.jenkins.io/display/JENKINS/Multiple+SCMs+Plugin
    (你看,这插件专门在首页喊你去用 Pipeline 哈哈哈哈)

    kblacksheep
        12
    kblacksheep  
    OP
       2019-03-17 09:20:04 +08:00 via Android
    @also24 这种最简单的话。如果 b 仓库的更新了又不会触发拉取更新。。我是想 ab 任一仓库更新后可以都会拉取 b 仓库里的代码然后执行
    kblacksheep
        13
    kblacksheep  
    OP
       2019-03-17 09:20:29 +08:00 via Android
    @also24 谢谢 这个我去看下
    also24
        14
    also24  
       2019-03-17 12:02:07 +08:00 via Android   ❤️ 1
    @kblacksheep 那更简单了… B 仓库的 webhook 也配置到同一个 job 就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5812 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:24 · PVG 11:24 · LAX 19:24 · JFK 22:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.