mio4kon

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

  •  
  •   mio4kon · Jul 30, 2021 via iPhone · 3291 views
    This topic created in 1768 days ago, the information mentioned may be changed or developed.
    现在是 gradle home 的缓存放在 nfs 服务器上,然后 pod 挂载 gradle 缓存的 pvc,但是多个 pod 并行执行的话会有文件锁直接导致报错。

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

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