Herramientas de usuario

Herramientas del sitio


clase:daw:daw:2eval:tema09

9. Despliegue continuo

Introducción

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:

Contenedor con Jenkins

Jenkins es lo que se llama un "Servidor de automatización".

Hay abundante documentación sobre él , en los siguientes enlaces:

Aunque Jenkins pueda parecer sencillo o superfluo, usar Jenkins es el camino para hacer software de calidad.:

GitHub Actions

GitHub Actions que son acciones que se ejecutan cuando hay algún cambio en el repositorio o que incluso se pueden ejecutar como queramos (Al estilo de Jenkins)

Para ello en el código fuente del proyecto Java , hay que añadir el fichero .github/workflows/desplegar.yml con el siguiente contenido:

name: Desplegar

on:
  workflow_dispatch:
  push:
    branches:
      - master

jobs:
  vpn_job:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v3
 

      - name: Configurar la VPN
        working-directory: .github/workflows
        run: |
          sudo apt-get update && sudo apt-get install -y openvpn openvpn-systemd-resolved
          echo "${{ secrets.VPN_CA }}" | base64 --decode > ca.crt
          echo "${{ secrets.VPN_USERNAME }}" > credenciales.txt
          echo "${{ secrets.VPN_PASSWORD }}" >> credenciales.txt
          sed -i "s/REPLACE_VPN_IP/${{ secrets.VPN_IP }}/" vpn-pve.conf
          sed -i "s/REPLACE_VPN_PORT/${{ secrets.VPN_PORT }}/" vpn-pve.conf 

      - name: Connect to VPN
        working-directory: .github/workflows      
        run: sudo openvpn --config vpn-pve.conf --daemon --log openvpn.log 

      - name: Wait for VPN to establish
        run: sleep 10

      - name: Test Connection
        working-directory: .github/workflows
        run: sudo cat openvpn.log 

      - name: Test Connection
        run: ping -c 2 192.168.59.104

      - name: Run remote script
        working-directory: .github/workflows      
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SERVER_ID_RSA }}
        run: |
          echo "$SSH_PRIVATE_KEY" > ./id_rsa
          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://github.com/lgonzalezmislata/DesplegarFacturasDocker.git'
          ssh -i ./id_rsa -o StrictHostKeyChecking=no -t  ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'sudo chmod 777 -R ./DesplegarFacturasDocker'
          ssh -i ./id_rsa -o StrictHostKeyChecking=no -t  ${{ secrets.SERVER_USERNAME }}@192.168.59.104 'cd DesplegarFacturasDocker && sudo ./deploy.sh 2>&1'

Ahora al hacer cualquier cambio en la rama master se ejecutará nuestro script de despliegue

Puedes ver un ejemplo en https://github.com/lgonzalezmislata/Facturas/tree/master/.github/workflows

Ejercicios

Ejercicio 1

Añade al repositorio de tu código fuente de Java una acción de GitHhub Actions que sea para desplegar.

Se ejecutará:

  • Manualmente
  • Cuando haya un cambio en master
clase/daw/daw/2eval/tema09.txt · Última modificación: 2025/02/13 09:33 por admin