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 [2021/01/04 13:07] admin [Ejercicios] |
clase:daw:daw:2eval:tema09 [2025/02/13 09:33] (actual) admin [Ejercicio 1] |
||
---|---|---|---|
Línea 7: | Línea 7: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | Es despliegue continuo es desplegar las aplicaciones web lo más pronto posible. | ||
+ | |||
+ | Hay varias formas de hacer eso, las 2 que vamos a comentar son: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
Línea 24: | Línea 30: | ||
{{: | {{: | ||
- | En ejercicios de temas anteriores hemos visto como instalar Jenkins.Ahora vamos a ejecutar un Script desde Jenkins | ||
- | ==== root por SSH ==== | + | ===== GitHub Actions ===== |
- | Antes que nada debemos permitir | + | GitHub Actions |
- | Para permitirlo hay que lanzar las siguientes órdenes: | ||
- | sudo sed -i 's/# | + | Para ello en el código fuente del proyecto Java , hay que añadir el fichero |
- | sudo systemctl restart ssh.service | + | |
- | Despues habrá que cambiar la contraseña a root con la siguiente orden: | + | <sxh yml> |
+ | name: Desplegar | ||
- | sudo passwd root | + | on: |
+ | workflow_dispatch: | ||
+ | push: | ||
+ | branches: | ||
+ | - master | ||
- | <note warning> | + | jobs: |
- | 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. | + | |
- | </note> | + | |
+ | steps: | ||
+ | - name: Checkout repo | ||
+ | uses: actions/checkout@v3 | ||
+ | |||
- | ==== SSH2 Easy ==== | + | - name: Configurar la VPN |
- | Otra cosa que necesitamos hacer es instalar | + | |
+ | run: | | ||
+ | sudo apt-get update && sudo apt-get install -y openvpn openvpn-systemd-resolved | ||
+ | echo "${{ secrets.VPN_CA }}" | ||
+ | echo "${{ secrets.VPN_USERNAME }}" > credenciales.txt | ||
+ | echo "${{ secrets.VPN_PASSWORD }}" >> credenciales.txt | ||
+ | sed -i " | ||
+ | sed -i " | ||
- | * Instalar en Jenkis el plugin "SSH2 Easy": | + | - name: Connect to VPN |
- | * En Jenkins pulsa " | + | |
- | * En el campo de búsqueda, escribe "SSH2 Easy" | + | run: sudo openvpn --config vpn-pve.conf --daemon --log openvpn.log |
- | * Marca el plugin "SSH2 Easy" y pulsa " | + | |
- | * Espera unos segundos y pulsa en " | + | |
- | \\ | + | |
- | \\ | + | |
+ | - name: Wait for VPN to establish | ||
+ | run: sleep 10 | ||
- | * Configurar el plugin "SSH2 Easy": | + | - name: Test Connection |
- | * Vuelve a " | + | |
- | * Ves al apartado de " | + | run: sudo cat openvpn.log |
- | * 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 ==== | + | - name: Test Connection |
- | Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real. | + | run: ping -c 2 192.168.59.104 |
- | * Pulsa en "Nueva Tarea" , escribe "Tarea de Prueba" | + | - name: Run remote script |
- | * Ves al apartado de "Ejecutar" | + | |
- | | + | env: |
- | | + | SSH_PRIVATE_KEY: |
- | | + | run: | |
+ | echo "$SSH_PRIVATE_KEY" | ||
+ | chmod 600 ./id_rsa | ||
+ | ssh -i ./id_rsa -o StrictHostKeyChecking=no -t ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'sudo rm -rf DesplegarFacturasDocker' | ||
+ | ssh -i ./id_rsa -o StrictHostKeyChecking=no -t ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'sudo git clone https:// | ||
+ | ssh -i ./id_rsa -o StrictHostKeyChecking=no -t ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'sudo chmod 777 -R ./ | ||
+ | ssh -i ./id_rsa -o StrictHostKeyChecking=no -t ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'cd DesplegarFacturasDocker && sudo ./deploy.sh 2>& | ||
+ | </ | ||
+ | Ahora al hacer cualquier cambio en la rama '' | ||
- | <note tip> | + | Puedes ver un ejemplo en [[https:// |
- | 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/master | + | |
- | npm run deploy | + | |
- | + | ||
- | </note> | + | |
===== Ejercicios ===== | ===== Ejercicios ===== | ||
- | ==== Ejercicio 1 ==== | + | ===== Ejercicio 1 ===== |
- | Ahora vamos a automatizar la ejecución del Script anterior usando Jenkins | + | Añade al repositorio |
- | + | ||
- | * Crea un nuevo contenedor | + | |
- | * Instala Jenkins | + | |
- | * Instala el plugin de SSH2 Easy sabiendo | + | |
- | * 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. | + | |
- | + | ||
- | Para hacerlo deberás: | + | |
- | * Investigar como funciona GitHub Actions | + | |
- | * Usar [[https:// | + | |
+ | Se ejecutará: | ||
+ | * Manualmente | ||
+ | * Cuando haya un cambio en '' | ||