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 21:59]
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 291: 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 
- 
-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 "​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. 
- 
- 
- 
-# 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+**5.6 Una vez configurado** ​
  
 +Probar el pipeline si funciona correctamente,​ replicar los webhook para cada ambiente.
  
  
ada/howto/sicoferp/factory/new-migracion-sicoferp/front/iac.1720130383.txt.gz · Última modificación: 2024/07/04 21:59 por 192.168.177.98