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

与Jenkins一起使用时的Conan本地缓存,jenkins,conan,Jenkins,Conan,我们的Jenkins管道将有不同的并发作业运行conan install和conan export pkg,以更新本地缓存 目前,我们在/home/jenkins/conan中为jenkins用户提供了一个本地缓存。多个用户登录到Jenkins,因此一个用户的行为将影响其他用户 对于本地缓存,使用Jenkins和Conan的首选方式是什么?每个Jenkins作业是否应该通过设置CONAN\u USER\u HOME=$WORKSAPCE/CONAN或类似的设置来获得自己的本地缓存?CONAN缓存

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

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


对于本地缓存,使用Jenkins和Conan的首选方式是什么?每个Jenkins作业是否应该通过设置CONAN\u USER\u HOME=$WORKSAPCE/CONAN或类似的设置来获得自己的本地缓存?

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

在大多数情况下,最好通过
CONAN\u USER\u HOME
环境变量为每个作业设置一个干净的缓存

有几种方法可以加快构建速度:

  • 有一个服务器,比如靠近CI机器的人工制品,具有用于依赖项的预编译二进制文件
  • 有一个新的实验是并发的,可以在多个CI作业之间共享。它可以有很大的好处,特别是如果网络是缓慢的

如果设置
CONAN\u USER\u HOME=$WORKSAPCE/CONAN
每次删除工作区时,缓存都会被删除,因此您不会从缓存中获得任何好处。在我看来,将其设置为类似于
/home/jenkins/.conan/
的值是有意义的。查看下载缓存,如果我理解,我仍然需要为每个作业使用单独的
conan\u USER\u home
。文档中说:“此缓存纯粹是一种优化机制。它与柯南软件包缓存(通常为/.Conan文件夹)完全不同。”它还说,“对于连续集成过程,建议每个作业使用不同的柯南软件包缓存(柯南用户主页)”“是的,没错。下载缓存可以在不同的作业之间共享,但每个作业都需要不同的柯南软件包缓存(不同的柯南用户主页)。