Te damos la bienvenida a nuestro espacio, aquí vas a hallar la solucíon a lo que buscabas.
Solución:
Como mencioné en este comentario, la solución debería ser agregar un usuario adecuado dentro del contenedor. Usos de Jenkins 984:984
para uid/gid en mi máquina (pero puede ser diferente en la suya; inicie sesión en el host en el que se está ejecutando Jenkins y ejecute sudo -u jenkins id -a
para detectarlos), por lo que debe replicarlo en el contenedor que debe ejecutar 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"]
Por supuesto, ya que no eres el root
usuario en el contenedor, cree un entorno virtual:
$ docker run --rm -it jenkins/python /bin/bash
[email protected]:~$ python -m venv myenv
[email protected]:~$ source myenv/bin/activate
[email protected]:~$ pip install numpy
o usar el --user
argumento:
$ docker run --rm -it jenkins/python /bin/bash
[email protected]:~$ pip install --user --upgrade pip
[email protected]:~$ pip install --user numpy
etc
Alternativamente, usted poder (pero en la mayoría de los casos no debería) ingresar al contenedor como root
pero con jenkins
grupo:
$ docker run --user 0:984 ...
De esta forma, aunque los archivos modificados seguirán cambiando de propietario, la propiedad de su grupo seguirá intacta, por lo que Jenkins podrá limpiar los archivos (o puede hacerlo usted mismo, a través de
sh 'rm -f modified_file'
en el Jenkinsfile
.
Puntuaciones y reseñas
Tienes la posibilidad compartir esta noticia si te fue de ayuda.