jenkins - 与 Jenkins 一起使用时的 Conan 本地缓存

标签 jenkins conan

我们的 Jenkins 管道将有不同的并发作业运行 conan installconan export-pkg 更新本地缓存。

我们目前在/home/jenkins/conan 中为 jenkins 用户提供了一个本地缓存。多个用户登录到 Jenkins,因此一个用户的行为会影响其他用户。

当涉及到本地缓存时,使用 Jenkins 和 Conan 的首选方式是什么?每个 Jenkins 作业是否应该通过设置 CONAN_USER_HOME=$WORKSAPCE/conan 或类似的东西来获得自己的本地缓存?

最佳答案

Conan 缓存不是为并发而设计的。如果一个作业正在创建和构建一个包,而同时另一个作业试图使用该包,则可能存在竞争条件,并且作业可能会意外失败并出现未定义的行为。因此并发使用是不允许的,这排除了为通用作业共享缓存,除非您的使用模式受到严格控制。

对于大多数情况,最好通过 CONAN_USER_HOME 环境变量为每个作业设置一个干净的缓存。

可以做几件事来加快构建速度:

  • 有一个服务器,例如靠近 CI 机器的 Artifactory,其中包含用于依赖项的预编译二进制文件。
  • 有一个新的实验download cache这是并发的,可以在多个 CI 作业之间共享。它可以有很大的好处,特别是在网络速度慢的情况下。

关于jenkins - 与 Jenkins 一起使用时的 Conan 本地缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288299/

相关文章:

java - Selenium + Jenkins : Missing location header

docker - 强制 Jenkins 管道作业从 Dockerhub 中提取新的私有(private)镜像

javascript - 使用 API key 进行 Jenkins/Hudson API 访问不起作用

cmake - 使用 cmake 生成构建目标时找不到 CONAN_PKG::<PKG-NAME>

git - Jenkins git fetch 因未知选项 --progress 失败

ios - Jenkins 在不生成 IPA 文件的情况下成功

python - 如何诊断柯南安装问题

c++ - 我可以对我的 conan 包的用户隐藏我的链接标志吗?

ubuntu - 如何跨子目录包含所有 .so 库

找不到 Artifactory 的柯南存储库