too taking respond much logs domain bash nginx gitlab

bash - taking - ¿Cómo usar sudo en el script de compilación para gitlab ci?



gitlab ubuntu (1)

Hay un par de maneras de resolver esto.

Conceder permisos de sudo

Puede otorgar permisos de sudo al usuario de gitlab-runner ya que es quien está ejecutando el script de compilación.

$ sudo usermod -a -G sudo gitlab-runner

Ahora tiene que eliminar la restricción de contraseña para sudo para el usuario gitlab-runner .

Inicia el editor de sudo con

$ sudo visudo

Ahora agregue lo siguiente al final del archivo

gitlab-runner ALL=(ALL) NOPASSWD: ALL

No haga esto para los corredores de gitlab que pueden ser ejecutados por usuarios no confiables.

SSH Runner

Puede configurar el gitlab-ci-runner para conectarse a un host remoto mediante SSH. Configura esto para utilizar un usuario de forma remota que tenga permisos sudo y realice la compilación con ese usuario. El host remoto puede ser la misma máquina en la que se ejecuta el gitlab runner, o puede ser otro host.

Esta cuenta de usuario de compilación todavía necesitará tener permisos sudo y sin contraseña. Siga las instrucciones a continuación, excepto reemplazar gitlab-runner con el usuario de compilación.

Cuando me gustaría hacer algo que requiera privilegios de sudo, el proceso de compilación se atasca y cuando ps aux para ese comando, se cuelga en la lista pero no hace nada.

P.ej:

en el buildscript:

# stop nginx echo "INFO: stopping nginx. pid [$(cat /opt/nginx/logs/nginx.pid)]" sudo kill $(cat /opt/nginx/logs/nginx.pid)

En la consola de salida gitlab ci:

INFO: stopping nginx. pid [2741] kill $(cat /opt/nginx/logs/nginx.pid) # with a spinning wheel

en la fiesta

> ps aux | grep nginx root 6698 0.0 0.1 37628 1264 ? Ss 19:25 0:00 nginx: master process /opt/nginx/sbin/nginx nobody 6700 0.3 0.3 41776 3832 ? S 19:25 0:00 nginx: worker process kai 7015 0.0 0.0 4176 580 pts/0 S+ 19:27 0:00 sh -c sudo kill $(cat /opt/nginx/logs/nginx.pid) kai 7039 0.0 0.0 7828 844 pts/2 S+ 19:27 0:00 grep nginx

Asi que:

  • no se ejecutará el sudo kill $(cat /opt/nginx/logs/nginx.pid) , pero sh -c sudo kill $(cat /opt/nginx/logs/nginx.pid)
  • está colgando, sin respuesta (suena como que pide una contraseña interactivamente)