clase:daw:daw-proyecto: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-proyecto:tema07 [2026/10/14 01:18] – Scripts arrancar/parar y tests en el flujo y la chuleta claude | clase:daw:daw-proyecto:tema07 [2026/10/14 14:08] (actual) – Tema nuevo «2. IA y agentes»: los temas 2 a 7 pasan a ser 3 a 8, con sus referencias cruzadas renumeradas claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== 7. Resumen | + | ====== 7. Despliegue en el proyecto |
| - | La fábrica está montada. Esta página es la que se tiene abierta mientras se trabaja | + | Objetivo del tema: ''/ |
| - | ===== El flujo, en pasos ===== | + | Lo que ya sabéis: qué es GitHub Actions y un primer workflow con VPN y SSH, en [[clase: |
| - | **Por cada issue** (varios a la vez, cada uno en su worktree): | + | ===== El servidor ===== |
| - | - Crear el issue en GitHub y ponerlo en el tablero. | + | Un VPS compartido por toda la clase, con tres cosas montadas por el profesor: |
| - | - ''/ | + | |
| - | - Modo plan: decir qué se quiere, pedir que pregunte, revisar | + | |
| - | - ''/ | + | |
| - | - Los tests: ''/ | + | |
| - | - Pasar los tests: '' | + | |
| - | - ''/ | + | |
| - | - ''/ | + | |
| - | **Cuando hay algo que sacar:** | + | |
| + | * **nginx-proxy** en la red '' | ||
| + | | ||
| - | - ''/ | + | < |
| - | - Si algo sale en rojo, '' | + | |
| - | ===== Scripts y comandos | + | ===== Los mismos scripts |
| - | ^ Comando ^ Dónde ^ Qué hace ^ | + | En el servidor no hay nada nuevo que aprender: |
| - | | '' | + | |
| - | | '' | + | |
| - | ===== Los tres comandos de tests ===== | + | <sxh bash> |
| + | COMPOSE_FILE=compose.yaml | ||
| + | </ | ||
| - | ^ Comando ^ Dónde ^ Qué pasa ^ | + | * Con '' |
| - | | '' | + | |
| - | | '' | + | * Los workflows solo llaman a '' |
| - | | '' | + | |
| - | ===== Chuleta de skills | + | ===== Secretos |
| - | ^ Skill ^ Para qué ^ | + | La contraseña de la base de datos de producción no está en ningún fichero: está en //Settings |
| - | | ''/ | + | |
| - | | ''/ | + | |
| - | | ''/ | + | |
| - | | ''/ | + | |
| - | | ''/ | + | |
| - | | ''/ | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | ''/ | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | ===== Listo para la 2ª evaluación | + | ===== Los workflows |
| - | Antes de empezar el proyecto, todo esto tiene que estar hecho y comprobado: | + | Un solo fichero para CI y CD: |
| - | * Tablero creado | + | <sxh yaml; |
| - | * Dos worktrees | + | name: CI/CD |
| - | * Un CRUD hecho con el flujo de plan y un segundo con ''/ | + | |
| - | | + | on: |
| - | * Tests ArchUnit con su descripción | + | push: |
| - | * Tests de API y E2E generados pasando en '' | + | branches: [develop, main] |
| - | * '' | + | workflow_dispatch: |
| - | * CI en verde en '' | + | |
| - | * Una publicación | + | jobs: |
| - | * '' | + | ci: |
| + | runs-on: ubuntu-latest | ||
| + | steps: | ||
| + | - uses: actions/ | ||
| + | - uses: actions/ | ||
| + | with: { distribution: | ||
| + | - uses: actions/ | ||
| + | with: { node-version: | ||
| + | |||
| + | - name: Levantar la aplicación | ||
| + | env: { DB_PASSWORD: | ||
| + | run: | | ||
| + | docker network create nginx-proxy-network | ||
| + | docker compose up -d --build --wait | ||
| + | |||
| + | - name: Tests del backend (unitarios | ||
| + | working-directory: | ||
| + | run: mvn -B test | ||
| + | |||
| + | - name: Tests de API y E2E | ||
| + | working-directory: | ||
| + | run: | | ||
| + | npm ci | ||
| + | npx playwright install --with-deps chromium | ||
| + | npm run test:api | ||
| + | npm run test:e2e | ||
| + | |||
| + | deploy: | ||
| + | needs: ci | ||
| + | if: github.ref == ' | ||
| + | runs-on: self-hosted | ||
| + | steps: | ||
| + | - uses: actions/ | ||
| + | - name: Desplegar | ||
| + | env: | ||
| + | COMPOSE_FILE: | ||
| + | DB_PASSWORD: | ||
| + | run: ./app.sh start | ||
| + | - name: Smoke test | ||
| + | run: curl -fsS http://< | ||
| + | </ | ||
| + | |||
| + | Lo que hay que entender: | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | * **El smoke test** es el último paso: una petición a la URL de producción que tiene que responder 200. Si el despliegue ha dejado la aplicación caída, el workflow sale en rojo y se ve en el acto. | ||
| + | * '' | ||
| + | |||
| + | Y dos workflows pequeños de operación, | ||
| + | |||
| + | ===== La IA y los workflows ===== | ||
| + | |||
| + | El YAML lo escribe el agente a partir de lo de arriba. Y no hay skill para cuando CI sale en rojo, porque | ||
| + | |||
| + | ===== Ejercicios ===== | ||
| + | |||
| + | ==== Ejercicio 1 ==== | ||
| + | * Crea un issue «CI» e inícialo. | ||
| + | * Comprueba que '' | ||
| + | * Añade el secreto | ||
| + | * Escribe '' | ||
| + | |||
| + | ==== Ejercicio 2 ==== | ||
| + | * Pide al profesor que registre tu runner | ||
| + | * Crea un issue «Despliegue» e inícialo. Añade el job '' | ||
| + | * Finaliza el issue y ''/ | ||
| + | |||
| + | ==== Ejercicio 3 ==== | ||
| + | * Añade | ||
| + | * Lánzalos desde //Actions// y lee la salida de '' | ||
| + | |||
| + | ==== Ejercicio 4 ==== | ||
| + | * Cambia a propósito la URL del smoke test por una que no existe, finaliza el issue y publica. CI pasa y '' | ||
| + | * Haz un cambio visible en la aplicación, | ||
| + | |||
| + | Fuera de este tema, por ser de un sistema real y no de un proyecto de clase: entornos de '' | ||
clase/daw/daw-proyecto/tema07.1791933511.txt.gz · Última modificación: por claude
