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 15:25] – Runners: los diagramas PlantUML pasan a figuras SVG con el router del instituto 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 96: | Línea 95: | ||
| {{: | {{: | ||
| + | |||
| + | La clave privada SSH para entrar en el servidor ([[clase: | ||
| + | |||
| + | <sxh yaml; | ||
| + | name: Desplegar | ||
| + | |||
| + | on: | ||
| + | workflow_dispatch: | ||
| + | push: | ||
| + | branches: | ||
| + | - master | ||
| + | |||
| + | jobs: | ||
| + | desplegar: | ||
| + | runs-on: ubuntu-24.04 | ||
| + | steps: | ||
| + | - name: Desplegar | ||
| + | run: | | ||
| + | echo "${{ secrets.SSH_KEY }}" > clave | ||
| + | chmod 600 clave | ||
| + | ssh -i clave -o StrictHostKeyChecking=accept-new ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} " | ||
| + | </ | ||
| + | * '' | ||
| + | * '' | ||
| + | * ''" | ||
| + | |||
| + | 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 106: | Línea 132: | ||
| 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 112: | 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 122: | 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 138: | 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.1793283927.txt.gz · Última modificación: por claude
