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:
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