Jenkins以Jenkins用户身份启动管道容器,导致权限被拒绝错误



我有一个自定义的ubuntu docker镜像,我在其中安装了一些包并设置了环境变量,这样我就可以在jenkins中使用它来构建项目

FROM ubuntu:focal
# Set environment 
ENV DEBIAN_FRONTEND=noninteractive
ENV PATH="${PATH}:/usr/local/bin" 
ENV DB_PATH="/var/database"
ENV DB_TYPE=SQLITE
ENV CONAN_USER_HOME=/var/conan
VOLUME ${DB_PATH}
RUN dpkg --add-architecture i386 
&& apt-get update 
&& apt-get upgrade -y 
&& apt-get install -y  
jq 
lld 
git 
curl 
libncurses5 
cmake 
lsb-release 
binutils 
autoconf 
pkg-config 
subversion 
ninja-build 
python3 
python3-pip 
python3-dev 
python-dev-is-python3 
libudev-dev 
libgtk2.0-dev 
libgtk-3-dev 
autotools-dev 
openjdk-11-jdk 
libwebkit2gtk-4.0-dev 
gcc-multilib 
g++-multilib 
libdbus-1-dev:i386 
libgtk-3-dev:i386 
&& apt-get autoclean 
&& rm -rf 
/var/lib/apt/lists/* 
/var/tmp/* 
/tmp/*
RUN mkdir -p ${CONAN_USER_HOME} 
RUN pip install conan

当我告诉我的jenkins管道使用这个图像来构建我的项目时,它会抛出一个无法访问/var/conan的错误

$ docker run -t -d -u 1000:1000 -w /home/jenkins/workspace/Conan -v /home/jenkins/workspace/Conan:/home/jenkins/workspace/Conan:rw,z -v /home/jenkins/workspace/Conan@tmp:/home/jenkins/workspace/Conan@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** git.example.com:8444/devops/docker-environments/ubuntu:focal cat
$ docker top 30052002a0f00f32e8f42901ba82a36867874ef29c17c5d20cbf564e5e20723c -eo pid,comm
[Pipeline] {
[Pipeline] stage
[Pipeline] { (export)
[Pipeline] sh
+ python scripts/export2local.py
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/conans/util/files.py", line 193, in save
os.makedirs(dir_path)
File "/usr/lib/python3.8/os.py", line 223, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/var/conan/.conan/hooks'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/conans/client/command.py", line 2216, in run
method(args[0][1:])
File "/usr/local/lib/python3.8/dist-packages/conans/client/command.py", line 1115, in export
return self._conan.export(path=args.path,
File "/usr/local/lib/python3.8/dist-packages/conans/client/conan_api.py", line 93, in wrapper
return f(api, *args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/conans/client/conan_api.py", line 879, in export
cmd_export(self.app, conanfile_path, name, version, user, channel, keep_source,
File "/usr/local/lib/python3.8/dist-packages/conans/client/cmd/export.py", line 112, in cmd_export
hook_manager.execute("pre_export", conanfile=conanfile, conanfile_path=conanfile_path,
File "/usr/local/lib/python3.8/dist-packages/conans/client/hook_manager.py", line 52, in execute
save(self._attribute_checker_path, attribute_checker_hook)
File "/usr/local/lib/python3.8/dist-packages/conans/util/files.py", line 196, in save
raise OSError("The folder {} does not exist and could not be created ({})."
OSError: The folder /var/conan/.conan/hooks does not exist and could not be created (Permission denied).

当我进一步研究这个问题时,它似乎是使用自定义uid和gid-u 1000:1000而不是作为root运行容器。当我为Conan home取消设置环境变量为时,它只是默认为/,并给出相同的错误。有没有一种方法可以让一个目录对所有用户都有写权限,因为这个容器在构建时不存在jenkins用户?

我不知道在容器中创建一个新用户会让jenkins默认为该用户,我认为它传递的参数总是相同的。

相关内容

最新更新