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.:
En ejercicios de temas anteriores hemos visto como instalar Jenkins.Ahora vamos a ejecutar un Script desde Jenkins en la máquina real.
Antes que nada debemos permitir que se pueda acceder por SSH como root desde la máquina real. Esto lo vamos a necesitar ya que desde Jenkins vamos a ejecutar "npm run deploy" en la máquina real y para ello necesitamos ser root.
Para permitirlo hay que lanzar las siguientes órdenes:
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config sudo systemctl restart ssh.service
Despues habrá que cambiar la contraseña a root con la siguiente orden:
sudo passwd root
Otra cosa que necesitamos hacer es instalar y configurar el plugin "SSH2 Easy" para poder acceder por SSH a la máquina real y así lanzar las órdenes en la máquina real.
Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real.
cd /carpeta del proyecto git fetch --prune git checkout master git merge --ff-only origin/master npm run deploy
Ahora vamos a ver con configurar Jenkins y GitHub para que al hacer un cambios en "main" se ejecute el Job que despliega la aplicación. Para ello vamos a usar una funcionalidad de GitHub llamada GitHub Actions que son acciones que se ejecutan cuando hay algún cambio en el repositorio.
En Jenkins vamos a creara un Token (Es como una contraseña del usuario)
Ves al Job y en "configurar"
En el código fuente del proyecto , añade el fichero .github/workflows/main.yml
con el siguiente contenido:
name: deploy on: push: branches: - main jobs: build: name: desplegar runs-on: ubuntu-latest steps: - name: trigger single Job uses: appleboy/jenkins-action@master with: url: "URL del servidor de Jenkins" user: "nombre del usuario de Jenkins" token: "El Token que has generado antes" job: "nombre del Job a ejecutar"
Ahora al hacer cualquier cambio en la rama main
se ejecutará el Job de Jenkins
Ahora vamos a automatizar la ejecución del Script anterior usando Jenkins
/var/jenkins_home
se almacene dentro de /opt/tuNombre/docker/jenkins
alumno
.Desplegar
que ejecute lo siguiente en la máquina realcd /opt/tuNombre/ejemplodaw git fetch --prune --force git checkout master git merge --ff-only origin/master npm run deploy
Ahora haz un cambio en el SASS en master , súbelos a GitHub y ejecuta el Job de Jenkins.Prueba a navegar a http://tuNombre.daw2.pve2.fpmislata.com y se verán los cambios. Ahora haz un cambio en el HTML en master , súbelos a GitHub y ejecuta el Job de Jenkins.Prueba a navegar a http://tuNombre.daw2.pve2.fpmislata.com y se verán los cambios.
Ahora vamos a automatizar todo el proceso de despliegue de forma que cuando haya un cambio en master que se despliegue automáticamente el código.
Mira lo que son en GitHub los "secrets" en Encrypted secrets
Ahora modifica el fichero .github/workflows/main.yml
para que no se vea el Token