es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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"]
Tags:  , , ,

Answer

  1. Avatar for 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 y clone_depth a tu archivo config.toml. Por ejemplo, tu config.toml debería lucir algo así:

    [[runners]]
      name = "tu-runner"
      url = "https://gitlab.com/"
      token = "tu-token"
      executor = "docker"
      clone_url = "https://tu-dominio-gitlab.com"
      clone_depth = 1
      [runners.docker]
        image = "MiImagen:latest"
        privileged = true
        disable_cache = false
        volumes = ["/cache"]
      [runners.cache]
        [runners.cache.s3]
        [runners.cache.gcs]
    

    clone_url especifica la URL del servidor de GitLab que se utilizará al clonar el repositorio. También puedes usar clone_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.

Comments are closed.