V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mio4kon
V2EX  ›  Kubernetes

大佬们,用 k8s+Jenkins 去构建 Android 的话 gradle 缓存怎么搞?

  •  
  •   mio4kon · 2021-07-30 20:02:30 +08:00 via iPhone · 2496 次点击
    这是一个创建于 1218 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在是 gradle home 的缓存放在 nfs 服务器上,然后 pod 挂载 gradle 缓存的 pvc,但是多个 pod 并行执行的话会有文件锁直接导致报错。

    现在的想法是每次构建前把 nfs 的缓存目录 copy 到 pod 的 gradle home,但是 gradle home 太大了( 15g 左右),本机 cp 都要几分钟,影响构建时间,而且如何更新 gradle home 的内容也很麻烦

    大佬们有没有好的解决方案?
    14 条回复    2021-11-12 12:54:51 +08:00
    tanhui2333
        1
    tanhui2333  
       2021-07-30 20:10:25 +08:00
    如果非上 k8s,固定节点加 local 存储更合适吧
    kwanzaa
        2
    kwanzaa  
       2021-07-30 20:12:57 +08:00
    文件变动之后 resync?
    mio4kon
        3
    mio4kon  
    OP
       2021-07-30 20:15:43 +08:00 via iPhone
    @tanhui2333 是的,如果没有好的方案只能固定节点数量了,不过每次构建可能就不是干净的容器了,构建脚本我们现在是暴露出去的,担心其他人乱改影响稳定性
    mio4kon
        4
    mio4kon  
    OP
       2021-07-30 20:23:02 +08:00 via iPhone
    @kwanzaa 相当于容器构建完了不能销毁,然后一直同步 gradle 缓存?
    kwanzaa
        5
    kwanzaa  
       2021-07-30 23:25:24 +08:00
    @mio4kon 也可以将目录挂载到容器里面
    Mystery0
        6
    Mystery0  
       2021-07-31 00:01:14 +08:00 via Android
    一个项目一个缓存目录?
    sampeng
        7
    sampeng  
       2021-07-31 00:56:12 +08:00
    java 项目。。而且你都 k8s+jenkins 了。说明有足够机器。你不内网做个仓库么?
    内网有 gradle 仓库,完全不需要缓存。
    gradle 缓存在 k8s+jenkins 方案里有各种奇怪的问题出现。比较折腾。
    本来编译就慢,3 分钟和 3 分钟 30 秒。没什么太大感觉上的差异。。而且不用折腾。很舒服。。
    sampeng
        8
    sampeng  
       2021-07-31 00:58:23 +08:00
    另外也不需要 copy 。gradle 有参数指定缓存目录。我第一个方案就是这样。但是不定期死锁。不要问我为什么。。。。用了半年我觉得有点崩溃。换一个。pod 不销毁。jenkins 的那个 pod 居然有大小限制。。多了就 disk full 。。。跑了 3 个月。。放弃。
    现在这个方案最舒服。用完就销毁。啥都不耽误。半年没管过他。就老老实实打包就好了
    xuanbg
        9
    xuanbg  
       2021-07-31 07:26:20 +08:00
    私有仓库+私服就解决问题了。从私服拉依赖构建,构建完镜像 push 到私有仓库。至于你 k8s 怎么用私有仓库的镜像,就随意了。
    mio4kon
        10
    mio4kon  
    OP
       2021-07-31 11:18:29 +08:00 via iPhone
    @sampeng 是的,我现在用的就是参数指定目录,不过指定的是共享目录,所以会有死锁,你说的 gradle 仓库是指 maven center 吗?但是有些外网的依赖,虽然都换成阿里云镜像地址了,不过还是很慢
    mio4kon
        11
    mio4kon  
    OP
       2021-07-31 11:21:19 +08:00 via iPhone
    @xuanbg 是指每次构建完把容器重新打包上传个新镜像,然后每次构建拉新版本的镜像是吗
    wdlth
        12
    wdlth  
       2021-07-31 19:11:54 +08:00
    内网没有搭建 Nexus 镜像么?
    sampeng
        13
    sampeng  
       2021-08-02 08:39:42 +08:00
    @mio4kon Nexus 或者 jfrog 做内网镜像。非常快
    mogging
        14
    mogging  
       2021-11-12 12:54:51 +08:00 via Android
    gradlew + nexus + local volume pv 试试看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.