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:
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 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
Añade al repositorio de tu código fuente de Java una acción de GitHhub Actions que sea para desplegar.
Se ejecutará:
master