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 | ||
clase:daw:daw:2eval:tema09 [2020/12/08 12:08] admin |
clase:daw:daw:2eval:tema09 [2021/01/24 08:12] admin [Crear un Job] |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== 9. Despliegue continuo ====== | ====== 9. Despliegue continuo ====== | ||
+ | |||
+ | |||
+ | ===== Introducción ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
Línea 11: | Línea 18: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
Aunque Jenkins pueda parecer sencillo o superfluo, usar Jenkins //**es el camino**// para hacer software de calidad.: | Aunque Jenkins pueda parecer sencillo o superfluo, usar Jenkins //**es el camino**// para hacer software de calidad.: | ||
- | {{: | + | {{: |
- | En los ejercicios | + | En ejercicios |
- | Ahora vamos a ejecutar un Script desde Jenkins | + | |
- | ==== root por SSH ==== | + | ===== root por SSH ===== |
- | Permitir | + | 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 passwd | ||
sudo sed -i ' | sudo sed -i ' | ||
sudo systemctl restart ssh.service | sudo systemctl restart ssh.service | ||
- | ==== SSH2 Easy ==== | + | Despues habrá que cambiar la contraseña a root con la siguiente orden: |
- | Vamos a instalar y configurar el plugin "SSH2 Easy" para poder acceder por SSH a la máquina real y así lanzar | + | |
+ | 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 | ||
+ | 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 | ||
* Instalar en Jenkis el plugin "SSH2 Easy": | * Instalar en Jenkis el plugin "SSH2 Easy": | ||
* En Jenkins pulsa " | * En Jenkins pulsa " | ||
* En el campo de búsqueda, escribe "SSH2 Easy" | * En el campo de búsqueda, escribe "SSH2 Easy" | ||
- | * Marca el plugin "SSH2 Easy" y pulsa "Inslar | + | * Marca el plugin "SSH2 Easy" y pulsa "Instalar |
* Espera unos segundos y pulsa en " | * Espera unos segundos y pulsa en " | ||
\\ | \\ | ||
Línea 53: | Línea 68: | ||
* Server IP: La IP de la máquina real. | * Server IP: La IP de la máquina real. | ||
- | ==== Crear un Job ==== | + | |
+ | ===== Crear un Job ===== | ||
Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real. | Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real. | ||
- | * Pulsa en "Nueva Tarea" , escribe "Tarea de Prueba" , selecciona "Crear un proyecto de estilo libre" y luego pulsa el botón " | + | * Pulsa en "Nueva Tarea" , escribe "Desplegar" , selecciona "Crear un proyecto de estilo libre" y luego pulsa el botón " |
* Ves al apartado de " | * Ves al apartado de " | ||
- | * El el campo " | + | * El el campo " |
+ | * Pulsa el botón de " | ||
+ | * Pulsa en " | ||
- | mkdir / | ||
- | * Pulsa el botón de " | ||
- | * Pulsa en " | ||
- | * Si todo ha ido bien, en tu máquina real ahora tendrás la carpeta ''/ | ||
+ | <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 ==== | ||
+ | Ahora vamos a automatizar todo el proceso de despliegue de forma 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 '' | ||