Guía para la Instalación de entorno de CI/CD en Rasperry Pi

De Wiki de EGC
Revisión del 19:21 11 dic 2021 de Joszamama (discusión | contribuciones) (Instalación de Jenkins)
Saltar a: navegación, buscar


Prerrequisitos


Instalación del SO

Primero vamos a instalar el sistema operativo en la tarjeta micro SD. Para ello iremos a "https://www.raspberrypi.com/software/" y descargaremos Raspberry Pi OS. Una vez instalado, insertamos la tarjeta SD con un adaptador y seleccionamos:

  • Raspberry Pi OS (32-bit)
  • Almacenamiento: Seleccionamos la tarjeta micro SD


Le damos a escribir y a esperar. Una vez acabe el proceso, vamos al directorio raiz de la tarjeta y creamos un archivo llamado "ssh" sin extension. Esto habilitará SSH en la raspberry.


Arranque del sistema

  1. Insertamos la tarjeta SD en la ranura de la Raspberry. (localizada en el lado contrario de los puertos USB)
  2. Conectamos un extremo del cable Ethernet a la Raspberry y el otro extremo a un ordenador.
  3. Conectamos el cable de alimentación a la Raspberry.
  4. Abrimos PuTTY y nos conectamos a raspberrypi.local


Configuración inicial

Una vez abierta la sesión nos van a pedir usuario y contraseña, que por defecto son usuario: "pi", contraseña: "raspberry". Luego de iniciar sesión en la cuenta principal vamos a escribir

sudo raspi-config

Y con las flechas navegamos hasta "3 INTERFACE OPTIONS", habilitamos SSH y VNC. Cerramos la conexión y abrimos VNC Viewer. Nos conectamos de nuevo a raspberrypi.local y ya podremos ver la interfaz gráfica de nuestra raspberry! Ahora debemos seguir los pasos de configuración que aparecen en la pantalla, introduciendo la zona horaria, idioma y una contraseña nueva para el usuario "pi". Para finalizar configuraremos la red WiFi y dejaremos que el asistente busque e instale las actualizaciones. (Esto puede tardar un rato). Cuando acabe abrimos una terminal, escribimos:

$ sudo apt update
$ sudo apt upgrade

Para finalizar nos quedaremos con la IP de nuestra máquina con el siguiente comando:

$ hostname -I

y con esto hecho ya podemos reiniciar la raspberry quitando el cable Ethernet y reconectarnos usando VNC Viewer.


Instalación de Jenkins

Primero necesitamos instalar el JRE de Java para que Jenkins funcione:

$ sudo apt install openjdk-11-jre

Una vez hecho esto vamos a crear las claves para añadir el repositorio de paquetes de jenkins al repositorio de la raspberry. Lo haremos con:

$ curl https://pkg.jenkins.io/debian/jenkins.io.key | gpg --dearmor | sudo tee /usr/share/keyrings/jenkins-archive-keyring.gpg >/dev/null
$ sudo nano /etc/apt/sources.list.d/jenkins.list

Y añadiremos la siguiente línea:

deb [signed-by=/usr/share/keyrings/jenkins-archive-keyring.gpg] https://pkg.jenkins.io/debian binary/

Luego actualizaremos los paquetes e instalaremos Jenkins:

$ sudo apt update
$ sudo apt install jenkins

Una vez instalado, Jenkins genera una contraseña inicial que tendremos que dar en el primer arranque. La podemos ver con el siguiente comando:

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Copiamos la clave, entramos a [IP_DE_TU_RASPBERRY]:8080 y la ponemos, luego seleccionamos "Instalar Plugins Recomendados" y esperamos a que acabe la instalación. Jenkins está ahora instalado como servicio del sistema, que es justo lo que queremos. Esto significa que siempre que el sistema arranque jenkins también lo hará.

Configuración de Jenkins

Vamos a instalar los plugins extras que vamos a necesitar, para ello iremos a:

Panel de Control > Administrar Jenkins > Administrar Plugins

Seleccionamos "Todos los plugins" e instalamos PostBuildScript. Una vez instaladas todas las herramientas necesarias, vamos al menú principal y seleccionamos "Nueva Tarea". Aquí podemos configurar proyectos de distintas maneras, para nuestro caso vamos a utilizar "Crear proyecto de estilo libre".

  • En General, seleccionamos "Desechar ejecuciones antiguas".
  • En Configurar el origen del código fuente, seleccionamos Git.
  • En URL ponemos la URL de nuestro repositorio "https://github.com/joszamama/decide.git".
  • Podemos configurar varias ramas, en mi caso uso "*/master".
  • En Disparadores de ejecuciones seleccionamos "GitHub hook trigger for GITScm polling"
  • En Ejecutar, damos a añadir nuevo paso, ejecutar linea de comando shell y copiamos el siguiente código:
# Create/Activate  virtualenv
python3 -m venv decide-enviroment
. ./decide-enviroment/bin/activate

# Install Requirements
pip install -r requirements.txt

# Run tests
cd decide
./manage.py test -v 2
  • En Acciones para ejecutar después vamos a seleccionar "Add generic script file"
/usr/sbin/restart-decide.sh if build was success