Cómo clonar sin privilegios de root en gitlab-runner docker.
Estoy tratando de crear un pipeline de integración continua para mi código. He registrado un runner con el executor de Docker en mi máquina. Me he dado cuenta de que está clonando el repositorio con privilegios de root dentro del contenedor de Docker.
$ ls -l
total 4
drwxrwxrwx 4 root root 4096 Jan 3 18:02 my-repo
Por lo tanto, para construir el contenido en mi repositorio, debo ejecutar algunos comandos con sudo desde mi archivo .gitlab-ci.yml y no quiero hacerlo.
stages:
- build
default:
image: MyImage:latest
build:
stage: build
script:
# No quiero usar sudo aquí, pero como mi repositorio está clonado con privilegios de root, debo usar sudo.
- sudo ./build -j 1
¿Hay alguna forma de indicarle a gitlab-runner que clone el repositorio con privilegios de usuario?
edit
Mi Dockerfile crea una imagen con un usuario
<h1>Crear un usuario con uid/gid 1000 para que coincida con el usuario en la mayoría de las máquinas host</h1>
RUN apt-get update && apt-get -y install sudo && rm -rf /var/lib/apt/lists/*
RUN addgroup --gid 1000 myUser
RUN adduser --disabled-password --gecos "" --uid 1000 --gid 1000 myUser
RUN usermod -a -G sudo myUser
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN usermod -a -G dialout myUser
USER myUser
RUN touch ~/.sudoasadmin_successful
COPY --chown=1000:1000 export.sh .
RUN ./export.sh
WORKDIR /dev_folder/
CMD ["/bin/bash"]
davy.ai
Sí, puedes modificar la configuración del GitLab Runner para clonar el repositorio con privilegios de usuario en lugar de privilegios de root.
Para hacer eso, agrega
clone_url
yclone_depth
a tu archivoconfig.toml
. Por ejemplo, tuconfig.toml
debería lucir algo así:clone_url
especifica la URL del servidor de GitLab que se utilizará al clonar el repositorio. También puedes usarclone_path
para especificar la ruta del repositorio en relación a la URL del servidor de GitLab.clone_depth
especifica cuántos commits se deben clonar.Después de modificar el archivo
config.toml
, reinicia el GitLab Runner para que los cambios surtan efecto.Con estas configuraciones, el repositorio será clonado dentro del contenedor Docker con privilegios de usuario en lugar de privilegios de root, permitiéndote evitar el uso de “sudo” para ejecutar comandos en tu repositorio.