V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
LoNeFong
V2EX  ›  程序员

咨询一个 CI 构建问题,问问合适的解决方案

  •  
  •   LoNeFong · Apr 24, 2022 · 2182 views
    This topic created in 1477 days ago, the information mentioned may be changed or developed.

    目前所有微服务都是放在一个 project 里面(来的时候就这样(逃) 使用 gradle 构建 目前出现的问题,据我知道的 CI 系统都是全量构建(或者是我不会用),就是代码更新后就全部构建 想要的效果: 1.更新 A 服务,只构建 A 服务推送镜像 2.不想使用 Jenkins 3.或者能不能手动点击构建那种,把每个服务都当成 task

    10 replies    2022-04-27 15:43:19 +08:00
    zengxs
        1
    zengxs  
       Apr 24, 2022   ❤️ 1
    据我所知 gitlab runner 应该可以实现,其他 ci 系统不太了解

    1. 只更新:
    git diff --name-only HEAD~1..HEAD 检查这次提交变更的文件列表
    然后通过脚本生成一个对应的 ci 配置文件
    然后通过 trigger 执行下一步的 ci 任务

    一个简单的例子
    stages:
    - setup
    - trigger

    generate-config:
    stage: setup
    image: python
    tags: [ docker ]
    script:
    - pip install pyyaml
    - ./generate-config.py > generated-config.yml
    - cat generated-config.yml
    artifacts:
    paths:
    - generated-config.yml
    expire_in: 3 days

    trigger:
    stage: trigger
    needs: [ generate-config ]
    trigger:
    include:
    - artifact: generated-config.yml
    job: generate-config

    2. 手动点击执行构建任务
    生成的 ci 任务里面配置 when: manual 就行了
    zengxs
        2
    zengxs  
       Apr 24, 2022   ❤️ 1
    @zengxs #1 代码格式不太对,可以看这个 https://pastebin.com/3sLVkWkr
    GuryYu
        3
    GuryYu  
       Apr 24, 2022   ❤️ 1
    不清楚你的微服务数量有多少,数量不多时可以参考:
    将每个微服务的编译 job 拆分,每个 job 通过 only:changes 来配置单个微服务所关注的相关文件
    ```
    build microService1:
    stage: build
    script: xxx build
    only:
    changes:
    - microService1/**
    - publicConfig.xxx

    build microService2:
    stage: build
    script: xxx build
    only:
    changes:
    - microService2/**
    - publicConfig.xxx
    ```
    LoNeFong
        4
    LoNeFong  
    OP
       Apr 24, 2022
    了解 谢谢前面两位大佬, 我去学习一下
    LoNeFong
        5
    LoNeFong  
    OP
       Apr 24, 2022
    @GuryYu 大概十来个 但是全都在一个 project 所以很头疼
    LoNeFong
        6
    LoNeFong  
    OP
       Apr 24, 2022
    @GuryYu 大概就是 only-changes 这种功能了, 学艺不精 之前没仔细看到这个
    liubaicai
        7
    liubaicai  
       Apr 24, 2022
    github 可以设置
    paths:
    - 'xxx/**'
    iamzuoxinyu
        9
    iamzuoxinyu  
       Apr 25, 2022
    是所谓的 monorepo 么?你们构建的产物也是单镜像么,如果是,那建议不要做多余的事情,只要是 monorepo ,做这种 onchange 肯定会带来更多的麻烦(主要是公共引用依赖带来的)
    LoNeFong
        10
    LoNeFong  
    OP
       Apr 27, 2022
    @iamzuoxinyu 确实算 monorepo 也是构建的单镜像
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   874 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 21:38 · PVG 05:38 · LAX 14:38 · JFK 17:38
    ♥ Do have faith in what you're doing.