mio4kon

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

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