clase:daw:daw:tema07
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| clase:daw:daw:tema07 [2026/10/29 14:20] – Fuera el despliegue por VPN+SSH: Workflows con compilar.yml en el runner de GitHub y el despliegue con runner propio claude | clase:daw:daw:tema07 [2026/10/29 19:16] (actual) – [Runners] claude | ||
|---|---|---|---|
| Línea 3: | Línea 3: | ||
| ===== Introducción ===== | ===== Introducción ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | |||
| El despliegue continuo es desplegar las aplicaciones web lo más pronto posible: cada cambio que se sube al repositorio acaba en el servidor sin que nadie tenga que hacerlo a mano. | El despliegue continuo es desplegar las aplicaciones web lo más pronto posible: cada cambio que se sube al repositorio acaba en el servidor sin que nadie tenga que hacerlo a mano. | ||
| Línea 15: | Línea 10: | ||
| - Compilarlo y pasar los tests. | - Compilarlo y pasar los tests. | ||
| - Construir la imagen Docker. | - Construir la imagen Docker. | ||
| - | - Conectarse al servidor y arrancar | + | - Desplegar |
| Si un paso falla, se para ahí y avisa: lo que no compila o no pasa los tests no llega al servidor. | Si un paso falla, se para ahí y avisa: lo que no compila o no pasa los tests no llega al servidor. | ||
| - | Los dos que vamos a ver son: | + | Existen muchas formasde hacerlo, antiguamente se hacía con una herramienta de software libre llamada |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | ^ ^ Jenkins ^ GitHub Actions | + | GitHub Actions |
| - | | Dónde se ejecuta | + | |
| - | | Hay que instalarlo | + | * **Cuándo se ejecuta:** al hacer un push, cuando tú decidas o a una hora programada. |
| - | | Dónde se escriben los pasos | En Jenkins | En el repositorio, en '' | + | * **Qué se ejecuta:** las tareas (**jobs**), como compilar, pasar los tests o desplegar. Cada job se compone de pasos (**steps**), |
| - | | Sirve para repositorios fuera de GitHub | ✓ | | | + | * **Dónde se ejecuta:** en un **runner**, el programa que ejecuta los jobs. Puede estar en una máquina virtual |
| + | |||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| - | Si el proyecto está en GitHub, usa GitHub Actions. | ||
| ===== Workflows ===== | ===== Workflows ===== | ||
| - | Un **workflow** es un fichero YAML dentro de la carpeta '' | + | Un **workflow** es un fichero YAML dentro de la carpeta '' |
| * '' | * '' | ||
| - | * '' | + | * '' |
| + | | ||
| * '' | * '' | ||
| * '' | * '' | ||
| Línea 58: | Línea 57: | ||
| jobs: | jobs: | ||
| compilar: | compilar: | ||
| - | runs-on: ubuntu-latest | + | runs-on: ubuntu-24.04 |
| steps: | steps: | ||
| - uses: actions/ | - uses: actions/ | ||
| Línea 79: | Línea 78: | ||
| Un **runner** es el programa que ejecuta los jobs de un workflow: GitHub le pasa los pasos y él los va ejecutando y le devuelve el log. Dónde está el runner lo elige '' | Un **runner** es el programa que ejecuta los jobs de un workflow: GitHub le pasa los pasos y él los va ejecutando y le devuelve el log. Dónde está el runner lo elige '' | ||
| - | * **Runner de GitHub** ('' | + | * **Runner de GitHub** ('' |
| * **Runner propio** ('' | * **Runner propio** ('' | ||
| Línea 95: | Línea 94: | ||
| El runner está en Internet y el servidor en el instituto, así que para desplegar tendría que entrar por VPN y SSH, con las claves guardadas como secretos: | El runner está en Internet y el servidor en el instituto, así que para desplegar tendría que entrar por VPN y SSH, con las claves guardadas como secretos: | ||
| - | <uml> | + | {{: |
| - | actor " | + | |
| - | cloud " | + | La clave privada SSH para entrar en el servidor ([[clase: |
| - | | + | |
| - | | + | <sxh yaml; |
| - | } | + | name: Desplegar |
| - | node " | + | |
| - | | + | on: |
| - | } | + | |
| - | alumno | + | |
| - | repo --> runner | + | |
| - | runner --> | + | - master |
| - | </uml> | + | |
| + | jobs: | ||
| + | | ||
| + | runs-on: ubuntu-24.04 | ||
| + | steps: | ||
| + | - name: Desplegar | ||
| + | run: | | ||
| + | echo "${{ secrets.SSH_KEY }}" | ||
| + | chmod 600 clave | ||
| + | | ||
| + | </sxh> | ||
| + | * '' | ||
| + | * '' | ||
| + | * ''" | ||
| + | |||
| + | Solo funciona si el servidor acepta SSH desde Internet. Si está detrás del router del instituto o de la empresa, antes hay que conectar la VPN en otro paso, con más secretos. O quizás ni se pueda si no hay una VPN | ||
| ==== Con un runner propio ==== | ==== Con un runner propio ==== | ||
| Línea 113: | Línea 127: | ||
| El runner está dentro del servidor. Es él quien **pregunta a GitHub** si hay trabajo, por HTTPS, como un navegador: no hace falta abrir ningún puerto ni VPN, y funciona aunque el servidor esté detrás del router del instituto. | El runner está dentro del servidor. Es él quien **pregunta a GitHub** si hay trabajo, por HTTPS, como un navegador: no hace falta abrir ningún puerto ni VPN, y funciona aunque el servidor esté detrás del router del instituto. | ||
| - | < | + | {{: |
| - | actor " | + | |
| - | cloud " | + | |
| - | node " | + | |
| - | } | + | |
| - | node " | + | |
| - | node " | + | |
| - | component " | + | |
| - | } | + | |
| - | alumno | + | |
| - | repo < | + | |
| - | runner --> deploy : 3. lo ejecuta | + | |
| - | </ | + | |
| ==== Instalar un runner propio en Linux ==== | ==== Instalar un runner propio en Linux ==== | ||
| Un runner se registra en **un** repositorio y solo ejecuta sus workflows. Se instala en el servidor con el usuario que va a desplegar, no con '' | Un runner se registra en **un** repositorio y solo ejecuta sus workflows. Se instala en el servidor con el usuario que va a desplegar, no con '' | ||
| - | - En el repositorio, | + | - En el repositorio, |
| - Descargarlo:< | - Descargarlo:< | ||
| mkdir actions-runner && cd actions-runner | mkdir actions-runner && cd actions-runner | ||
| Línea 136: | Línea 138: | ||
| tar xzf ./ | tar xzf ./ | ||
| </ | </ | ||
| - | - Registrarlo en el repositorio. Pregunta el grupo, el nombre y las etiquetas: con //Enter// se queda lo que propone.< | + | - Registrarlo en el repositorio. '' |
| ./config.sh --url https:// | ./config.sh --url https:// | ||
| </ | </ | ||
| Línea 146: | Línea 148: | ||
| - En //Settings → Actions → Runners// tiene que salir como //Idle//. | - En //Settings → Actions → Runners// tiene que salir como //Idle//. | ||
| - | El workflow | + | <note important> |
| - | <sxh yaml; | + | ==== Configurar un workflow para usar un runner ==== |
| + | El workflow es el mismo que con el [[# | ||
| + | |||
| + | <sxh yaml; | ||
| name: Desplegar | name: Desplegar | ||
| Línea 162: | Línea 167: | ||
| steps: | steps: | ||
| - name: Desplegar | - name: Desplegar | ||
| - | run: | | + | run: ~/deploy.sh |
| - | rm -rf DesplegarFacturasDocker | + | |
| - | git clone https:// | + | |
| - | cd DesplegarFacturasDocker && ./deploy.sh | + | |
| </ | </ | ||
| - | <note important> | + | Lo que hace que el job se ejecute |
| - | + | ||
| - | <note important> | + | |
| - | + | ||
| - | <note warning> | + | |
| Más información: | Más información: | ||
clase/daw/daw/tema07.1793280007.txt.gz · Última modificación: por claude
