Guía para la Instalación de entorno de CI/CD en Rasperry Pi
Contenido
Prerrequisitos
- Raspberry Pi Model B (1/2/4/8) GB
- Cargador USB Tipo-C
- Tarjeta Micro SD (16 GB como mínimo)
- Cable Ethernet
- PuTTY "https://www.putty.org/"
- VNC Viewer "https://www.realvnc.com/es/connect/download/viewer/"
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
- Insertamos la tarjeta SD en la ranura de la Raspberry. (localizada en el lado contrario de los puertos USB)
- Conectamos un extremo del cable Ethernet a la Raspberry y el otro extremo a un ordenador.
- Conectamos el cable de alimentación a la Raspberry.
- 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