Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa Próxima revisión Ambos lados, revisión siguiente | ||
clase:daw:daw:2eval:tema09 [2020/12/08 12:07] admin creado |
clase:daw:daw:2eval:tema09 [2021/01/04 16:02] admin [Ejercicios] |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== 9. Despliegue continuo ====== | ====== 9. Despliegue continuo ====== | ||
+ | |||
+ | |||
+ | ===== Introducción ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | ===== Contenedor con Jenkins ===== | ||
+ | Jenkins es lo que se llama un " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Hay abundante documentación sobre él , en los siguientes enlaces: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | Aunque Jenkins pueda parecer sencillo o superfluo, usar Jenkins //**es el camino**// para hacer software de calidad.: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | En ejercicios de temas anteriores hemos visto como instalar Jenkins.Ahora vamos a ejecutar un Script desde Jenkins | ||
+ | |||
+ | ===== root por SSH ===== | ||
+ | Antes que nada debemos permitir que se pueda acceder por SSH como root desde la máquina real. Esto lo vamos a necesitar ya que desde Jenkins vamos a ejecutar "npm run deploy" | ||
+ | |||
+ | Para permitirlo hay que lanzar las siguientes órdenes: | ||
+ | |||
+ | sudo sed -i ' | ||
+ | sudo systemctl restart ssh.service | ||
+ | |||
+ | Despues habrá que cambiar la contraseña a root con la siguiente orden: | ||
+ | |||
+ | sudo passwd root | ||
+ | |||
+ | <note warning> | ||
+ | En un entorno real o sin que haya un cortafuegos delante de la máquina, nunca deberíamos permitir que con root se pueda acceder a la máquina real. Sin embargo lo vamos nosotros a permitir ya que estamos en un entorno educativo. | ||
+ | </ | ||
+ | |||
+ | ===== Plugin SSH2 Easy ===== | ||
+ | Otra cosa que necesitamos hacer es instalar y configurar el plugin "SSH2 Easy" para poder acceder por SSH a la máquina real y así lanzar las órdenes en la máquina real. | ||
+ | |||
+ | * Instalar en Jenkis el plugin "SSH2 Easy": | ||
+ | * En Jenkins pulsa " | ||
+ | * En el campo de búsqueda, escribe "SSH2 Easy" | ||
+ | * Marca el plugin "SSH2 Easy" y pulsa " | ||
+ | * Espera unos segundos y pulsa en " | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | |||
+ | * Configurar el plugin "SSH2 Easy": | ||
+ | * Vuelve a " | ||
+ | * Ves al apartado de " | ||
+ | * En el apartado " | ||
+ | * Group Name: Máquina Real | ||
+ | * Password: La contraseña de root de tu máquina real. | ||
+ | * Pulsa en el botón " | ||
+ | * Vuelve a " | ||
+ | * Ves al apartado de " | ||
+ | * En el apartado " | ||
+ | * Server Group: Máquina real. | ||
+ | * Server Name: maquina-real | ||
+ | * Server IP: La IP de la máquina real. | ||
+ | |||
+ | |||
+ | ===== Crear un Job ===== | ||
+ | Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real. | ||
+ | |||
+ | * Pulsa en "Nueva Tarea" , escribe " | ||
+ | * Ves al apartado de " | ||
+ | * El el campo " | ||
+ | * Pulsa el botón de " | ||
+ | * Pulsa en " | ||
+ | |||
+ | <note tip> | ||
+ | Al hacer añadido el Token puede ejecutar tambien el Job con una URL similar a la siguiente: | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | <note tip> | ||
+ | Los Script que querremos ejecutar lo normal es que sean los siguientes: | ||
+ | |||
+ | cd /carpeta del proyecto | ||
+ | git fetch --prune | ||
+ | git checkout master | ||
+ | git merge --ff-only origin/ | ||
+ | npm run deploy | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== GitHub Actions ===== | ||
+ | Ahora vamos a ver con configurar Jenkins y GitHub para que al hacer un cambios en " | ||
+ | |||
+ | |||
+ | En Jenkins vamos a creara un Token (Es como una contraseña del usuario) | ||
+ | * Pulsa en nuestro nombre de usuario en la parte superior derecha. | ||
+ | * En el menu lateral, ves a " | ||
+ | * Pulsa en el botón de "Add new Token" y en el botón " | ||
+ | * Copia en algún lugar seguro el Token generado | ||
+ | * Pulsa en el botón " | ||
+ | |||
+ | Ves al Job y en " | ||
+ | * Ves al apartado " | ||
+ | * Marca la opción " | ||
+ | * Escribe el Token que habías generado antes. | ||
+ | |||
+ | En el código fuente del proyecto , añade el fichero '' | ||
+ | |||
+ | <sxh yml> | ||
+ | name: deploy | ||
+ | on: | ||
+ | push: | ||
+ | branches: | ||
+ | - main | ||
+ | jobs: | ||
+ | build: | ||
+ | name: desplegar | ||
+ | runs-on: ubuntu-latest | ||
+ | steps: | ||
+ | - name: trigger single Job | ||
+ | uses: appleboy/ | ||
+ | with: | ||
+ | url: "URL del servidor de Jenkins" | ||
+ | user: " | ||
+ | token: "El Token que has generado antes" | ||
+ | job: " | ||
+ | </ | ||
+ | |||
+ | Ahora al hacer cualquier cambio en la rama '' | ||
+ | ===== Ejercicios ===== | ||
+ | |||
+ | ==== Ejercicio 1 ==== | ||
+ | Ahora vamos a automatizar la ejecución del Script anterior usando Jenkins | ||
+ | |||
+ | * Crea un nuevo contenedor de Jenkins de forma que la carpeta ''/ | ||
+ | * Instala Jenkins | ||
+ | * Instala el plugin de SSH2 Easy sabiendo que la IP es la de la máquina real de Linux de Francia. La contraseña es la misma que la del usuario '' | ||
+ | * Crea un Job llamado '' | ||
+ | |||
+ | cd / | ||
+ | git fetch --prune --force | ||
+ | git checkout master | ||
+ | git merge --ff-only origin/ | ||
+ | npm run deploy | ||
+ | |||
+ | Ahora haz un cambio en el SASS en master , súbelos a GitHub y ejecuta el Job de Jenkins.Prueba a navegar a < | ||
+ | Ahora haz un cambio en el HTML en master , súbelos a GitHub y ejecuta el Job de Jenkins.Prueba a navegar a < | ||
+ | |||
+ | ==== Ejercicio 2 ==== | ||
+ | Lo último que vamos a hacer para automatizar todo el proceso de despliegue es hacer que cuando haya un cambio en master que se despliegue automáticamente el código. | ||
+ | |||
+ | |||
+ | ==== Ejercicio 3 ==== | ||
+ | Mira lo que son en GitHub los " | ||
+ | |||
+ | Ahora modifica el fichero '' | ||