Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:new-migracion-sicoferp:front:iac

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ada:howto:sicoferp:factory:new-migracion-sicoferp:front:iac [2024/07/04 14:29]
192.168.177.98
ada:howto:sicoferp:factory:new-migracion-sicoferp:front:iac [2024/08/13 14:26] (actual)
192.168.177.33
Línea 28: Línea 28:
 **Al hacer Docker Build se ejecuta la siguiente receta: **Al hacer Docker Build se ejecuta la siguiente receta:
 ** **
 +
 +<​code>​
 +
 +# Usa una imagen base de Node.js
 +FROM node:​20-alpine AS build-step
 +
 +# Establecer el límite de memoria para Node.js
 +ENV NODE_OPTIONS=--max_old_space_size=4096
 +
 +# Variable de entorno que define el ambiente
 +ARG TYPE
 +
 +# Crea un directorio /app en la imagen
 +RUN mkdir -p /app
 +
 +# Establece el directorio de trabajo
 +WORKDIR /app
 +
 +# Copia los archivos de tu proyecto al directorio de trabajo
 +COPY package.json /app
 +
 +# Instala las dependencias del proyecto
 +RUN npm install
 +
 +# Copia el resto de los archivos de tu proyecto al directorio de trabajo
 +COPY . /app
 +
 +# Construye la aplicación Angular
 +RUN npm run build:​${TYPE}
 +
 +# Configura la imagen de producción de Nginx
 +FROM nginx:​alpine
 +
 +# Copia los archivos generados de la compilación de Angular a la carpeta de Nginx
 +COPY --from=build-step /​app/​dist/​mfsicof /​usr/​share/​nginx/​html
 +
 +# Expone el puerto 80 para que se pueda acceder a la aplicación desde el navegador
 +EXPOSE 80
 +
 +# Comando para iniciar Nginx cuando se ejecute el contenedor
 +CMD ["​nginx",​ "​-g",​ "​daemon off;"]
 +
 +</​code>​
 +
 +
 +**3) Crear proyecto en GitLab.
 +**
 +
 +Se crea un proyecto en GitLab con el siguiente repositorio:​ http://​10.1.140.120/​ada-microservices-ecosystem/​frontends/​mfsicof.git
 +
 +Se crea un webhook para el frontend con la siguiente URL:
 +
 +Para clonar el proyecto una vez tengas permisos de Git:
 +
 +code git clone http://​10.1.140.120/​ada-microservices-ecosystem/​frontends/​mfsicof.git Para instalar el ambiente se recomienda consultar la guía de primeros pasos.
 +
 +Se recomienda consultar la guía de flujo Git.
 +
 +**4) Preparar Jenkins.
 +**
 +
 +Adicional a la configuración de contenedores para Jenkins es necesario instalar jq.
 +jq es una herramienta de línea de comandos para procesar JSON. Asegúrate de que esté instalada en el sistema donde Jenkins está ejecutando el script.
 +En sistemas basados en Debian/​Ubuntu,​ puedes instalar jq con:
 +
 +  - sudo apt-get install jq
 +  - Configurar el Script en Jenkins:
 +  - Accede a la configuración del proyecto en Jenkins.
 +  - En la sección “Build”,​ añade o edita el paso “Execute shell”.
 +  - Copia y pega el script anterior en el campo de texto del shell.
 +  - Guardar y Probar:
 +  - Guarda la configuración del proyecto. ​    
 +
 +
 +**5.1 Acceder a Jenkins:
 +**
 +Inicia sesión en tu instancia de Jenkins.
 +
 +**5.2 Crear un nuevo proyecto:
 +**
 +Ve a "New Item".
 +Selecciona "​Pipeline"​ y da un nombre a tu proyecto.
 +Haz clic en "​OK"​.
 +
 +**5.3 Configurar el repositorio Git:
 +
 +**En la sección "​Source Code Management",​ selecciona "​Git"​.
 +Ingresa la URL de tu repositorio GitLab y las credenciales necesarias.
 +
 +**5.4 Configurar el webhook de GitLab:​** ​
 +
 +  * En GitLab, ve a tu proyecto.
 +  * Navega a "​Settings"​ > "​Webhooks"​.
 +  * Añade una nueva URL de webhook apuntando a tu Jenkins.
 +  * Selecciona los eventos que deseas que disparen el webhook, como "Push events"​. ​
 +
 +
 +**5.5 Añadir pasos de ejecución shell del pipeline** ​
 +
  
 <​code>​ <​code>​
Línea 130: Línea 229:
                         export DOCKER_HOST=${env.DOCKER_HOST_URI}                         export DOCKER_HOST=${env.DOCKER_HOST_URI}
                         if [ \$(docker ps -aq -f name=${env.CONTAINER_NAME}) ]; then                         if [ \$(docker ps -aq -f name=${env.CONTAINER_NAME}) ]; then
-                            docker stop ${env.CONTAINER_NAME} +                            docker stop ${env.CONTAINER_NAME} ​|| true 
-                            docker rm -fv ${env.CONTAINER_NAME}+                            docker rm -fv ${env.CONTAINER_NAME} ​|| true
                         fi                         fi
                         docker run -d -p 8095:80 --name ${env.CONTAINER_NAME} ${env.REPOSITORY_NAME}:​latest                         docker run -d -p 8095:80 --name ${env.CONTAINER_NAME} ${env.REPOSITORY_NAME}:​latest
Línea 164: Línea 263:
                         }                         }
                         delete_local_branches develop qa pre-production                         delete_local_branches develop qa pre-production
 +                        ​
 +                        # Re-crear la rama master desde el remoto
 +                        git fetch origin master:​master
 +                        git checkout master
                     '''​                     '''​
         ​         ​
Línea 208: Línea 311:
                         if (branchWarningMessage != 0) {                         if (branchWarningMessage != 0) {
                             echo "​Agrego mensaje advertencia."​                             echo "​Agrego mensaje advertencia."​
-                            warningMessage += "​Advertencia:​ La versión la rama ${branch} es superior a la versión de master. No se realizará el merge en dicha rama.\n"​+                            warningMessage += "​Advertencia:​ La versión ​de la rama ${branch} es superior a la versión de master. No se realizará el merge en dicha rama.\n"​
                             echo "​Mostrar mensaje : (${warningMessage})"​                             echo "​Mostrar mensaje : (${warningMessage})"​
                         }                         }
Línea 287: Línea 390:
     }     }
 } }
 +
  
 </​code>​ </​code>​
  
 +Activar esta configuración en el pipeline ​
 +{{:​ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp:​front:​opcion.png?​800|}}
  
-**3) Crear proyecto en GitLab. 
-** 
  
-Se crea un proyecto en GitLab con el siguiente repositorio:​ http://10.1.140.120/​ada-microservices-ecosystem/​frontends/​mfsicof.git+**5.6 Una vez configurado** ​
  
-Se crea un webhook para el frontend con la siguiente URL: +Probar el pipeline si funciona correctamentereplicar ​los webhook para cada ambiente.
- +
-Para clonar el proyecto una vez tengas permisos de Git: +
- +
-code git clone http://​10.1.140.120/​ada-microservices-ecosystem/​frontends/​mfsicof.git Para instalar el ambiente se recomienda consultar la guía de primeros pasos. +
- +
-Se recomienda consultar la guía de flujo Git. +
- +
-**4) Preparar Jenkins. +
-** +
- +
-Adicional a la configuración de contenedores para Jenkins es necesario instalar jq. +
-jq es una herramienta de línea de comandos para procesar JSON. Asegúrate de que esté instalada en el sistema donde Jenkins está ejecutando el script. +
-En sistemas basados en Debian/​Ubuntu,​ puedes instalar jq con: +
- +
-  - sudo apt-get install jq +
-  - Configurar el Script en Jenkins: +
-  - Accede a la configuración del proyecto en Jenkins. +
-  - En la sección “Build”,​ añade o edita el paso “Execute shell”. +
-  - Copia y pega el script anterior en el campo de texto del shell. +
-  - Guardar y Probar+
-  - Guarda la configuración del proyecto. ​     +
- +
- +
-**5.1 Acceder a Jenkins: +
-** +
-Inicia sesión en tu instancia de Jenkins. +
- +
-**5.2 Crear un nuevo proyecto: +
-** +
-Ve a "New Item"​. +
-Selecciona "​Freestyle project"​ y da un nombre a tu proyecto. +
-Haz clic en "​OK"​. +
- +
-**5.3 Configurar ​el repositorio Git: +
- +
-**En la sección "​Source Code Management"​selecciona "​Git"​. +
-Ingresa la URL de tu repositorio GitLab y las credenciales necesarias. +
- +
-**5.4 Configurar el webhook de GitLab:**  +
- +
-  * En GitLab, ve a tu proyecto. +
-  * Navega a "​Settings"​ > "​Webhooks"​. +
-  * Añade una nueva URL de webhook apuntando a tu Jenkins (e.g., //​http://​your-jenkins-url/​gitlab-webhook//​). +
-  * Selecciona ​los eventos que deseas que disparen el webhook, como "Push events"​.  +
- +
- +
-**5.5 Añadir un paso de ejecución de shell:**  +
- +
- +
-En la sección "​Build",​ haz clic en "Add build step" y selecciona "​Execute shell"​. Copia y pega el siguiente script. +
- +
- +
-<​code>​ +
- +
-# Definir la URI del host Docker +
- +
-DOCKER_HOST_URI="​tcp://​172.17.0.1:​2375"​ +
- +
-# Exportar la variable DOCKER_HOST +
- +
-export DOCKER_HOST=$DOCKER_HOST_URI +
- +
-# Extraer la versión y el nombre del archivo package.json +
- +
-TAG_NAME=$(jq -r '​.version'​ package.json) +
-NAME=$(jq -r '​.name'​ package.json) +
- +
-# Modificar el nombre ​para insertar un guion después de '​mf'​ +
- +
-CONTAINER_NAME=$(echo $NAME | sed '​s/​^mf/​mf-/'​) +
- +
-# Quitar el guion del nombre del repositorio +
- +
-REPOSITORY_NAME="​ecosystemuser/​${NAME}"​ +
- +
-# Imprimir los nombres para visualización +
- +
-echo "​REPOSITORY_NAME:​ $REPOSITORY_NAME"​ +
-echo "​CONTAINER_NAME:​ $CONTAINER_NAME"​ +
- +
-# Construir la imagen Docker con el argumento de construcción +
- +
-docker build --no-cache --build-arg TYPE=prod -t $REPOSITORY_NAME:​$TAG_NAME ​ +
- +
-# Etiquetar la imagen con latest +
- +
-docker tag $REPOSITORY_NAME:​$TAG_NAME $REPOSITORY_NAME:​latest +
- +
-# Empujar la imagen con la etiqueta latest a Docker Hub +
- +
-docker push $REPOSITORY_NAME:​$TAG_NAME +
-docker push $REPOSITORY_NAME:​latest +
- +
-if [ "​$(docker ps -aq -f name=$CONTAINER_NAME)"​ ]; then +
-    docker stop $CONTAINER_NAME +
-    docker rm -fv $CONTAINER_NAME +
-fi +
- +
-# Ejecutar el nuevo contenedor con la imagen "​latest"​ +
- +
-docker run -d -p 8095:80 --name $CONTAINER_NAME $REPOSITORY_NAME:​latest +
- +
-</​code>​+
  
  
ada/howto/sicoferp/factory/new-migracion-sicoferp/front/iac.1720103394.txt.gz · Última modificación: 2024/07/04 14:29 por 192.168.177.98