Guía de Desarrollo de Software

Logo

Guía de Desarrollo de Software para del desarrollo de aplicaciones sobre el repositorio de la Dirección de Información y Tecnologías DSIT de la Universidad de Los Andes. Versión 1.2.0

Home

View the Project on GitHub UniandesDSIT/coding-guidelines

[ Volver al Menú Principal ]

Herramientas para CI & CD

A continuación, se mencionan el conjunto de herramientas que se recomiendan para el proceso de integración continua:


Manejo de profiles

Dado que el código fuente y en cada rama se van a tener los archivos de cada ambiente al momento de la compilación y generación del artefacto, se debería incluir el archivo respectivo del ambiente para el cual se genera la versión. Esta funcionalidad comúnmente se maneja con los profiles de Maven, junto con las siguientes variables:


Manejo de Pipelines en Jenkins

Se debería manejar un pipeline por cada una de las rutas, el cual tiene un Jenkinsfile que importa otro Jenkinsfile dependiendo del ambiente al cual se desea desplegar. Este valor debe ser ingresado de forma manual. En este caso cada ruta debería tener cuatro jenkinsfile (uno por cada ambiente), el cual va a tener los siguientes stages:

  1. Checkout de la rama dev-sprint-x
  2. Clean
  3. Copiado de archivos properties de desarrollo (por medio del profile de maven)
  4. Package
  5. Pruebas unitarias
  6. Análisis de SonarQube
  7. Subir artefacto a archiva al repositorio de snapshots-dev (por medio de profile de maven)
  8. Despliegue en ambiente de desarrollo (por medio de profile de maven)

Parámetros:

  1. Número de la versión que se va a crear en tag
  2. Rama dev-sprint-x

Stages:

  1. Realiza merge del Branch dev-sprint-x hacia el Branch master
  2. Crear un tag de la versión en el Branch master
  3. Checkout de la rama master del tag anteriormente creado
  4. Clean
  5. Copiado de archivos properties
  6. Package
  7. Pruebas unitarias
  8. Análisis de SonarQube
  9. Subir artefacto a archiva al repositorio de snapshots-pru
  10. Despliegue en ambiente de pruebas

Parámetros:

  1. Número de la versión del Git a desplegar.

Stages:

  1. Checkout de la rama master de un tag especifico
  2. Clean
  3. Copiado de archivos properties de calidad
  4. Package
  5. Pruebas unitarias
  6. Análisis de SonarQube
  7. Subir artefacto a archiva al repositorio de snapshots-calidad
  8. Despliegue en ambiente de calidad

Parámetros:

  1. Número de la versión de Git a desplegar

Stages:

  1. Checkout de la rama master del tag específico
  2. Clean
  3. Copiado de archivos properties de producción
  4. Package
  5. Pruebas unitarias
  6. Análisis de SonarQube
  7. Subir artefacto a archiva al repositorio de releases
  8. Despliegue en ambiente de producción

Definiendo un PipieLine

Por medio de un Pipeline (Jenkinsfile) que todo proyecto camel debe tener se establecerán las tareas de compilación, análisis de código, pruebas unitarias y despliegue en archiva.

pipeline {
  agent any
	tools {
     maven 'maven-local'
  }
  stages {
     stage ('Compile Stage') {
        steps {
           sh 'mvn clean compile'
        }
     }
     stage ('SonarQube Stage') {
        steps {
           sh 'mvn clean install'
           sh 'mvn test sonar:sonar'
        }
     }
  
     stage ('Deploy Stage') {
        steps {
           sh 'mvn deploy -DskipTests'
        }
     }
}

Despliegue y generación de release con sus respectivos tags.

Estos pasos están como plan piloto para una definicion completa de integración y despliegue continuo

	ssh-keygen
	clip {keyPath}
	eval $(ssh-agent -s)
	ssh-add ~/.ssh/<private-key>
	//Agregar a los repositorios o al perfil las llave publicas

Comandos de despliegue

    mvn deploy
   git add .
   git commit -m "{description}"
   mvn release:prepare
   mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"

[ Volver al Menú Principal ]