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