jenkins如何在docker容器中调用conan?错误:无法执行脚本conan
使用Docker作为构建环境,我的Jenkins文件启动指定的Docker容器并调用CMake,该容器使用conan触发构建过程,等等。不幸的是,管道失败,输出如下:jenkins如何在docker容器中调用conan?错误:无法执行脚本conan,jenkins,cmake,conan,Jenkins,Cmake,Conan,使用Docker作为构建环境,我的Jenkins文件启动指定的Docker容器并调用CMake,该容器使用conan触发构建过程,等等。不幸的是,管道失败,输出如下: -- Conan: checking conan executable -- Conan: Found program /usr/bin/conan -- Conan: Version found [148] Failed to execute script conan Traceback (most recent call l
-- Conan: checking conan executable
-- Conan: Found program /usr/bin/conan
-- Conan: Version found [148] Failed to execute script conan
Traceback (most recent call last):
File "conan/conans/conan.py", line 11, in <module>
File "conan/conans/conan.py", line 7, in run
File "conan/conans/client/command.py", line 2151, in main
File "conan/conans/client/conan_api.py", line 222, in factory
File "conan/conans/client/conan_api.py", line 234, in __init__
File "conan/conans/client/migrations.py", line 26, in __init__
File "conan/conans/client/cache/cache.py", line 78, in __init__
File "conan/conans/client/cache/cache.py", line 150, in config
File "conan/conans/util/files.py", line 190, in save
FileNotFoundError: [Errno 2] No such file or directory: '/.conan/conan.conf'
-- Conan executing: /usr/bin/conan install . -s build_type=Release -s compiler=clang -s compiler.version=10 -s compiler.libcxx=libstdc++11 -g=cmake --build=missing
[176] Failed to execute script conan
Traceback (most recent call last):
我在Jenkins文件中添加了以下环境变量。那它就行了!。我试图在docker容器中定义env变量,但失败了
environment {
CONAN_USER_HOME = "${env.WORKSPACE}/"
CONAN_NON_INTERACTIVE = 1
}
我在Jenkins文件中添加了以下环境变量。那它就行了!。我试图在docker容器中定义env变量,但失败了
environment {
CONAN_USER_HOME = "${env.WORKSPACE}/"
CONAN_NON_INTERACTIVE = 1
}
错误消息表示文件
/.conan/conan.conf
不存在。是吗?也许这应该是~/.conan/conan.conf
?@squareskittles据我所知,jenkins对根目录没有写权限,即使我手动创建了/.conan/conan.conf,conan也无法写它。我不知道怎么处理it@full_steak_developer你在运行哪个docker映像?柯南提供了一些稳定的docker图像:。无论如何,您可以通过传递Conan_USER_HOME()@uilianries来使用自定义Conan文件夹。我正在运行一个自定义映像,我在其中安装了其他工具。我没有明白的一点是:当我在docker容器中附加并运行简单的CMake来构建我的项目时,我作为root用户运行。这里的要点是一些权限。不允许Jenkins用户访问根目录。我想这应该解决了:/@full_steak_developer现在我明白了。默认情况下,Conan将使用home目录放置其文件夹。当您以root身份运行时,我认为应该是/root,但出于某种原因,它使用的是root级别/。无论如何,我建议您使用env var CONAN_USER_HOME提供的替代路径。它可能在/tmp中,因为我认为您的容器是临时的,仅用于构建。否则,例如,您可以尝试/root或/opt。错误消息表示文件/.conan/conan.conf
不存在。是吗?也许这应该是~/.conan/conan.conf
?@squareskittles据我所知,jenkins对根目录没有写权限,即使我手动创建了/.conan/conan.conf,conan也无法写它。我不知道怎么处理it@full_steak_developer你在运行哪个docker映像?柯南提供了一些稳定的docker图像:。无论如何,您可以通过传递Conan_USER_HOME()@uilianries来使用自定义Conan文件夹。我正在运行一个自定义映像,我在其中安装了其他工具。我没有明白的一点是:当我在docker容器中附加并运行简单的CMake来构建我的项目时,我作为root用户运行。这里的要点是一些权限。不允许Jenkins用户访问根目录。我想这应该解决了:/@full_steak_developer现在我明白了。默认情况下,Conan将使用home目录放置其文件夹。当您以root身份运行时,我认为应该是/root,但出于某种原因,它使用的是root级别/。无论如何,我建议您使用env var CONAN_USER_HOME提供的替代路径。它可能在/tmp中,因为我认为您的容器是临时的,仅用于构建。否则,您可以尝试/root或/opt,例如。CONAN_USE_ALWAYS_SHORT_路径仅适用于Windows,如果您为Linux创建docker映像,则无效。CONAN_USE_ALWAYS_SHORT_路径仅适用于Windows,如果您为Linux创建docker映像,则无效。