Configurar pipeline para llevar a producción en gitlab

  • Instalar dependencias
apt install xclip sudo
  • Primero vamos a crear una llave para el usuario root dentro del servidor gitlab, ingresamos como el usuario root y gitlab-runner
ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "root@git.siua.ac.cr"
ssh-keygen -o -a 100 -t ed25519 -f /home/gitlab-runner/.ssh/id_ed25519 -C "root@git.siua.ac.cr"
  • Luego comprobamos que el servicio este corriendo
eval "$(ssh-agent -s)"
  • Añadimos la llave al agente como usuario root
ssh-add ~/.ssh/id_ed25519
ssh-add /home/gitlab-runner/.ssh/id_ed25519
  • O todas las llaves
ssh-add
  • Luego copiamos la llave al servidor que deseamos conectar como root gitlab-runner
ssh-copy-id -i /root/.ssh/id_ed25519.pub root@web1.siua.ac.cr -p 44
  • Comprobamos que podemos logearnos si pedir contraseña
ssh root@web1.siua.ac.cr -p 44
  • Agregamos el usuario gitlab-runner al grupo root y sudo
sudo usermod -a -G root gitlab-runner
sudo usermod -a -G sudo gitlab-runner
  • Luego abrimos el archivo
nano /etc/sudoers
  • Y agregamos al final
gitlab-runner ALL=(ALL) NOPASSWD: ALL
  • Primero hacemos dentro de la carpeta del proyecto un archivo de nombre «.gitlab-ci.yml»
nano .gitlab-ci.yml
  • Le agregamos el siguiente codigo
before_script:
   - echo "before script..."
   - sudo apt update
   - eval $(ssh-agent -s)
   - whoami
   - ssh-add ~/.ssh/id_ed25519
   - whoami    

stages:
   - init
   - deploy

inicio:
   stage: init
   script:
     - echo "comenzando pase a producción"

despliegue:
  stage: deploy
  script:
    - whoami
    - echo "conectando al servidor...."
    - uname -n
    - ssh root@web1.siua.ac.cr -p 44  "cd /var/www/html/Sitios/quiosco.siua.ac.cr; git pull https://usuario:password@git.siua.ac.cr/siua/quiosco.siua.ac.cr.git"

  • Luego debemos instalar el runner dentro del servidor de gitlab (solo una vez)
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

apt-get install gitlab-runner
  • Luego le creamos una clave para el usuario gitlab-runer
passwd gitlab-runner
  • Resultado:
Introduzca la nueva contraseña de UNIX: 
Vuelva a escribir la nueva contraseña de UNIX: 
passwd: contraseña actualizada correctamente
  • Luego generamos una llave para el usuario gitlab-runner (SIN CLAVE)
ssh-keygen -t ed25519 -C "gustavo.matamoros@gmail.com"
  • Resultado:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/gitlab-runner/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/gitlab-runner/.ssh/id_ed25519.
Your public key has been saved in /home/gitlab-runner/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:ExJKSyRZI531tNkQUi2zLrqQFzLUAbf/WmG/sX2zdQQ gustavo.matamoros@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
|  +*Oo+.=o       |
|  .Bo* =o=.      |
|  . = . =+.   E  |
| .   . ...     . |
|  o . ..S       .|
|   + ..o.+     . |
|  o .. .o o     o|
|   o.  o   =  o..|
|    ...   o ...o |
+----[SHA256]-----+
  • Luego dentro d ela configuración del proyecto ingresamos a
  • Vamos a la sección de runners expandir
  • Y aquí vamos a encontrar la información necesaria patra darle acceso al runner
  • Ahora registramos el runner
gitlab-runner register
  • Nos va pedir una serie de datos
Runtime platform                                    arch=amd64 os=linux pid=20229 revision=003fe500 version=12.7.1
Running in system-mode.                            
                                                   
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://git.siua.ac.cr
Please enter the gitlab-ci token for this runner:
p9VpbVS8Dy9cL7pCM41u
Please enter the gitlab-ci description for this runner:
[git]: Pasé a produccion quiosco.siua.ac.cr
Please enter the gitlab-ci tags for this runner (comma separated):

Registering runner... succeeded                     runner=p9VpbVS8
Please enter the executor: docker-ssh, docker-ssh+machine, kubernetes, custom, docker, parallels, shell, ssh, virtualbox, docker+machine:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
  • Para nuestro caso el tipo va ser de tipo shell por que ocupamos ejecutar comando de este tipo
  • Ahora si recargamos la configuración de gitlab en CI/CD ya debería aparecer el runner
  • Pero este esta detenido, debemos arrancarlo
gitlab-runner run
  • Si volvemos a actualizar ya se encuentra activo