Herramientas de usuario

Herramientas del sitio


clase:daw:daw:2eval:tema09

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:daw:daw:2eval:tema09 [2020/12/18 09:37]
admin [Contenedor con Jenkins]
clase:daw:daw:2eval:tema09 [2021/01/24 08:12] (actual)
admin [Crear un Job]
Línea 26: Línea 26:
 En ejercicios de temas anteriores hemos visto como instalar Jenkins.Ahora vamos a ejecutar un Script desde Jenkins  en la máquina real. En ejercicios de temas anteriores hemos visto como instalar Jenkins.Ahora vamos a ejecutar un Script desde Jenkins  en la máquina real.
  
-==== root por SSH ====+===== root por SSH =====
 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. 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.
  
Línea 42: Línea 42:
 </note> </note>
  
-==== SSH2 Easy ====+===== Plugin SSH2 Easy =====
 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. 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.
  
Línea 68: Línea 68:
       * Server IP: La IP de la máquina real.       * Server IP: La IP de la máquina real.
  
-==== Crear un Job ====+ 
 +===== Crear un Job =====
 Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real. Vamos ahora a crear una tarea para poder ejecutar un script desde Jenkins en la máquina real.
  
-  * Pulsa en "Nueva Tarea" , escribe "Tarea de Prueba" , selecciona "Crear un proyecto de estilo libre" y luego pulsa  el botón "OK"+  * Pulsa en "Nueva Tarea" , escribe "Desplegar" , selecciona "Crear un proyecto de estilo libre" y luego pulsa  el botón "OK".
   * Ves al apartado de "Ejecutar" y en el desplegable de "Añadir una acción", selecciona "Remote shell".   * Ves al apartado de "Ejecutar" y en el desplegable de "Añadir una acción", selecciona "Remote shell".
   * El el campo "shell" , escribe las ordenes de Linux que quieres que se ejecuten en la máquina real como root.   * El el campo "shell" , escribe las ordenes de Linux que quieres que se ejecuten en la máquina real como root.
   * Pulsa el botón de "Guardar".   * Pulsa el botón de "Guardar".
   * Pulsa en "Construir ahora" y si todo ha ido bien, en tu máquina real se deberá haber ejecutado el Script   * Pulsa en "Construir ahora" y si todo ha ido bien, en tu máquina real se deberá haber ejecutado el Script
 +
  
  
Línea 89: Línea 91:
 </note> </note>
  
 +
 +===== GitHub Actions =====
 +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)
 +  * Pulsa en nuestro nombre de usuario en la parte superior derecha.
 +  * En el menu lateral, ves a "Configurar".
 +  * Pulsa en el botón de "Add new Token" y en el botón "Generate"
 +  * Copia en algún lugar seguro el Token generado
 +  * Pulsa en el botón "Guardar" que hay al final de la página.
 +
 +Ves al Job y en "configurar"
 +  * Ves al apartado "Disparadores de ejecuciones"
 +  * Marca la opción "Lanzar ejecuciones remotas (ejem: desde 'scripts')"
 +  * Escribe el Token que habías generado antes.
 +
 +En el código fuente del proyecto , añade el fichero ''.github/workflows/main.yml'' con el siguiente contenido:
 +
 +<sxh yml>
 +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"
 +</sxh>
 +
 +Ahora al hacer cualquier cambio en la rama ''main'' se ejecutará el Job de Jenkins
 +===== Ejercicios =====
 +
 +==== Ejercicio 1 ====
 +Ahora vamos a automatizar la ejecución del Script anterior usando Jenkins
 +
 +  * Crea un nuevo contenedor de Jenkins de forma que la carpeta ''/var/jenkins_home'' se almacene dentro de ''/opt/tuNombre/docker/jenkins''
 +  * Instala Jenkins
 +  * Instala el plugin de SSH2 Easy sabiendo que la IP es la de la máquina real de Linux de Francia. La contraseña es la misma que la del usuario ''alumno''.
 +  * Crea un Job llamado ''Desplegar'' que ejecute lo siguiente en la máquina real
 +
 +  cd /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 <nowiki>http://tuNombre.daw2.pve2.fpmislata.com</nowiki>  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 <nowiki>http://tuNombre.daw2.pve2.fpmislata.com</nowiki>  y se verán los cambios.
 +
 +==== Ejercicio 2 ====
 +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.
 +
 +
 +==== Ejercicio 3 ====
 +Mira lo que son en GitHub los "secrets" en [[https://docs.github.com/es/free-pro-team@latest/actions/reference/encrypted-secrets|Encrypted secrets]]
 +
 +Ahora modifica el fichero ''.github/workflows/main.yml'' para que no se vea el Token
  
clase/daw/daw/2eval/tema09.1608280674.txt.gz · Última modificación: 2020/12/18 09:37 por admin