如我所说
in this comment
,解决方案应该是在容器中添加适当的用户。詹金斯使用
984:984
对于我的机器上的uid/gid(但在您的机器上可能不同-登录到主机jenkins正在运行并执行
sudo -u jenkins id -a
要检测它们),因此需要将其复制到应由jenkins运行的容器中:
FROM python:3.7
RUN mkdir /home/jenkins
RUN groupadd -g 984 jenkins
RUN useradd -r -u 984 -g jenkins -d /home/jenkins jenkins
RUN chown jenkins:jenkins /home/jenkins
USER jenkins
WORKDIR /home/jenkins
CMD ["/bin/bash"]
当然,既然你不是
root
容器中的用户再创建一个虚拟环境:
$ docker run --rm -it jenkins/python /bin/bash
jenkins@d0dc87c39810:~$ python -m venv myenv
jenkins@d0dc87c39810:~$ source myenv/bin/activate
jenkins@d0dc87c39810:~$ pip install numpy
或使用
--user
论点:
$ docker run --rm -it jenkins/python /bin/bash
jenkins@d0dc87c39810:~$ pip install --user --upgrade pip
jenkins@d0dc87c39810:~$ pip install --user numpy
等。
或者,你
可以
(但在大多数情况下不应该)作为
根
但是
jenkins
组:
$ docker run --user 0:984 ...
这样,虽然修改后的文件仍将改变所有者,但它们的组所有权仍然完好无损,因此詹金斯将能够清理文件(或者您可以自己通过,通过
sh 'rm -f modified_file'
在
Jenkinsfile
.