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

2022-04-24 10:47:03 +08:00
 LoNeFong

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

1712 次点击
所在节点    程序员
10 条回复
zengxs
2022-04-24 10:54:25 +08:00
据我所知 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
2022-04-24 10:58:49 +08:00
@zengxs #1 代码格式不太对,可以看这个 https://pastebin.com/3sLVkWkr
GuryYu
2022-04-24 11:12:30 +08:00
不清楚你的微服务数量有多少,数量不多时可以参考:
将每个微服务的编译 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
2022-04-24 11:29:44 +08:00
了解 谢谢前面两位大佬, 我去学习一下
LoNeFong
2022-04-24 11:30:20 +08:00
@GuryYu 大概十来个 但是全都在一个 project 所以很头疼
LoNeFong
2022-04-24 11:31:40 +08:00
@GuryYu 大概就是 only-changes 这种功能了, 学艺不精 之前没仔细看到这个
liubaicai
2022-04-24 13:13:56 +08:00
github 可以设置
paths:
- 'xxx/**'
lxz6597863
2022-04-24 18:02:54 +08:00
iamzuoxinyu
2022-04-25 13:48:40 +08:00
是所谓的 monorepo 么?你们构建的产物也是单镜像么,如果是,那建议不要做多余的事情,只要是 monorepo ,做这种 onchange 肯定会带来更多的麻烦(主要是公共引用依赖带来的)
LoNeFong
2022-04-27 15:43:19 +08:00
@iamzuoxinyu 确实算 monorepo 也是构建的单镜像

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/848895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX