Integración Continua Instalación - keblato/TutorialesTalleres-Angular GitHub Wiki

Integración Continua

Es una práctica de desarrollo de software la cual tiene como objetivo mejorar la calidad del los productos de software mediante la integración temprana y frecuente de las contribuciones de los miembros del equipo de desarrollo.

Instalación del Circuito de Integración Continua.

Instalar Jenkins Windows

Jenkins es servidor de automatización de código abierto que permite ejecutar tareas de construcción, pruebas y despliegue de software. A continuación vamos a realizar la instalación y configuración de Jenkins para los tipo de proyectos del curso.

  • Ir al siguiente enlace download-jenkins y descargar el instalador windows. Siga las instrucciones del wizard de la instalación (Ubicación de la instalación).

  • Al finalizar el instalador Jenkins abrirá un browser en donde se realizará la configuración de la herramienta paso a paso. Como primer paso usted debe colocar el password inicial, este password lo encontrarán en ../Jenkins/secrets/initialAdminPassword

  • Luego, usted debe instalar los plugins por defecto más los Plugins Git Plugin, NodeJs Plugin y SonarQube Plugin. Puede instalar estos plugines después de terminar con la configuración en Admistrar Jenkins -> Administrar Plugines.

  • Para completar la instalación usted debe permitir que los anteriores plugines sean disponibles para Jenkins. Para esto, ingrese a Administrar Jenkins -> Global Tool Configuration y realice la siguiente configuración:

  • GIT

Git Configuration
Figura 1: Git Configuration
  • SonarQube Runner
SonarRunner Configuration
Figura 2: Sonar Runner Configuration
  • NodeJs
NodeJs Configuration
Figura 3: NodeJs Configuration

El comando completo es forever@~0.15.3 debug@~2.6.0 newman@~4.1.0 mocha@~5.2.0 nyc@~13.0.1 chai@~4.1.2

  • Finalmente, diríjase a Administrar Jenkins -> Configurar Sistema y realice la configuración del servidor SonarQube. Nota: El servidor se instalará posteriormente.
SonarQube Configuration
Figura 4: SonarQube Configuration

En este punto, usted ya tiene configurado Jenkins para ejecutar la construcción y la ejecución de los test de los proyectos front (Angular 6) y back(NodeJs).

Instalar SonarQube Windows

SonarQube es una herramienta open source para gestionar la calidad del código.

  • Descargar la version Comunity Edition desde el siguiente Link.
  • Una vez descomprimida la carpeta descargada, ejecutamos el siguiente comando desde la consola de windows(Ejecutar como administrador) %SONARQUBE_HOME%/bin/windows-x86-64/InstallNTService.bat donde %SONARQUBE_HOME% es la ubicación de la carpeta descargada y descomprimida. El anterior comando instalará el wrapper del servicio de SonarQube en la máquina windows.
Cmd Install Service
Figura 6: CMD Windows - Instalar servicio SonarQube

Ahora usted debe iniciar el servicio de SonarQube. Para ello ejecute en consola %SONARQUBE_HOME%/bin/windows-x86-64/StartNTService.bat esto lanzará el servidor de SonarQube.

Cmd Start Service
Figura 7: CMD Windows - Ejecutar servicio SonarQube

Finalmente, el servidor de sonarQube se lanzará desde http://localhost:9000 y estará listo para recibir información de las tareas de Jenkins.

SonarQube DashBoard
Figura 8: SonarQube DashBoard

Por recomendación de SonarQube es necesario asociar una base de datos para el almacenamiento de los análisis a los proyectos y no usar la base de datos básica. Para ello invitamos al estudiante leer la siguiente documentación SonarQube en donde se explica como asociar las distintas bases de datos. Como ejemplo para una base de datos Postgresql usted debe cambiar el archivo <install_directory>/conf/sonar.properties y agregar la siguiente configuración después de instalar Postgresql:

sonar.jdbc.username=sonarqube
sonar.jdbc.password=mypassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

Y finalmente reiniciar el servicio de SonarQube.

Ahora usted puede configurar la tarea del Backend y del front haciendo click en

  1. Configurar tarea para proyectos NodeJs - Backend.
  2. Configurar tarea para proyecto Angular 6 - Front