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

求问 drone 面对前后端分离的 repo 如何做自动化构建?

  •  
  •   xlsepiphone · 2022-01-05 13:40:51 +08:00 · 860 次点击
    这是一个创建于 1080 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Gitea 上有两个 repo ,一个存储的前端 React 的代码,另外一个是后端 SpringBoot 的代码。

    在本机的构建步骤如下:

    • 先编译前端项目,产物输出到 dist 文件夹
    • 复制 dist 文件夹到后端目录,后端执行 ./gradlew bootjar 生成 jar 包
    • 根据生成的 jar 包构建 Docker 镜像

    目前遇到的问题主要是,drone 的收到的 gitea 的 webhook 事件是针对单个 repo 的,比如我 push 到前端的 repo 。此时会触发前端的构建。

    由于我不想把两个项目放在一个 repo ,那对于这种存在依赖的项目构建,该如何处理?

    我目前想到的解决方案:

    • 将构建流程控制脚本单独放一个 repo 管理。
    • 在前端和后端 repo 中各放置一个 drone.yml,收到 push 事件后,运行构建任务,在 shell 中执行 drone 的 cli,触发一个构建流程控制脚本 repo 的 build 。
    • 然后在这个新的构建流程控制 repo 中,clone 前后端的项目,控制其构建顺序,生成最终的产物。

    我觉得我的解决方案,有点多此一举的感觉,但又苦于没有更佳的方法。

    6 条回复    2022-01-05 14:01:11 +08:00
    maichael
        1
    maichael  
       2022-01-05 13:44:22 +08:00
    这是那门子的前后端分离……
    “复制 dist 文件夹到后端目录,后端执行 ./gradlew bootjar 生成 jar 包”,只要把这步去掉,让前端代码和后端代码除了接口调用之外不存在任何关系,你的问题自然就迎刃而解。
    xlsepiphone
        2
    xlsepiphone  
    OP
       2022-01-05 13:46:31 +08:00
    @maichael #1 前端代码内嵌到 jar 包中的,小项目,方便部署管理。
    xlsepiphone
        3
    xlsepiphone  
    OP
       2022-01-05 13:48:57 +08:00
    @maichael #1 如果没有更好的办法,我会尝试不内嵌在里面,因为是小项目,不想再搞个 nginx 来单独部署前端的项目,直接用 SpringBoot 内嵌了。
    maichael
        4
    maichael  
       2022-01-05 13:59:32 +08:00   ❤️ 1
    @xlsepiphone #3

    可以尝试一下用 http://plugins.drone.io/drone-plugins/drone-downstream/ ,前端触发“测试->构建->触发后端 Repo 部署”。
    xlsepiphone
        5
    xlsepiphone  
    OP
       2022-01-05 14:00:17 +08:00
    好吧,问题解决。找到一个 drone 的下游触发器插件 plugins/downstream ,这样不用在 shell 中执行 drone 的 cli 来触发了。
    xlsepiphone
        6
    xlsepiphone  
    OP
       2022-01-05 14:01:11 +08:00
    @maichael #4 谢谢,我也 Google 到,才回复结贴,老哥就已经先我一步。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5364 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:00 · PVG 16:00 · LAX 00:00 · JFK 03:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.