Herramientas de usuario

Herramientas del sitio


clase:daw:daw:2eval:tema09

¡Esta es una revisión vieja del documento!


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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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

clase/daw/daw/2eval/tema09.1739435514.txt.gz · Última modificación: 2025/02/13 09:31 por admin