37 Commits
Author SHA1 Message Date
devops 5d3d578d36 chore: retrigger real del pipeline (comentario en build.yaml, path filtrado)
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (pull_request) Successful in 29s
Build and Push Frontend / Construir y Subir Imagen (pull_request) Skipped
2026-08-15 01:14:59 -05:00
devops e3ab3f7fc0 fix(ci): correr Semgrep nativo (venv) en vez de docker run anidado
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (pull_request) Successful in 22s
Build and Push Frontend / Construir y Subir Imagen (pull_request) Skipped
El runner de Gitea ejecuta cada job dentro de un contenedor propio que
habla con el daemon Docker del host (sibling containers) -- un
`docker run -v "\${{ github.workspace }}:/src"` desde ahí intenta
montar una ruta que solo existe DENTRO del contenedor del job, no en
el host real: "mkdir /workspace: read-only file system". Confirmado en
el run real (job 128, task_id 128) tras el fix del anchor.

Se valida localmente contra docker.gitea.com/runner-images:ubuntu-latest
(la misma imagen del runner real) que python3/pip3 están disponibles.
pip3 install directo falla por paquetes de apt sin metadata compatible
(PyJWT, "RECORD file not found") -- se usa un venv aislado en su lugar,
validado end-to-end con los dos steps extraídos del YAML real.
2026-08-14 23:50:23 -05:00
devops 6773a8085d fix(ci): quitar anchors/aliases YAML de build.yaml, no soportados por Gitea Actions
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (pull_request) Successful in 39s
Build and Push Frontend / Construir y Subir Imagen (pull_request) Skipped
Gitea descartaba el workflow completo en TODOS los eventos (push y
pull_request), desde el primer commit de gitleaks: "unknown on type:
&yaml.Node{...Value:"frontend_paths"...}". El YAML era válido (pyyaml
lo parsea sin problema, resolviendo el alias como cualquier parser
estándar) pero el parser propio de Gitea Actions para el bloque "on:"
no resuelve &anchor/*alias antes de inspeccionar el tipo de nodo.

Confirmado en vivo: tras mergear #19 a main, deploy-docs.yaml corrió
normal (sin anchors) pero build.yaml no generó ningún action_run.

Fix: paths duplicados literalmente entre push: y pull_request:, sin
anchor. Válido con parser YAML + bash -n en los 20 steps.
2026-08-14 23:24:31 -05:00
devops 2438a6ba0f fix(ci): corregir indentación YAML rota en el step de Semgrep
El python3 -c "..." embebido dentro del run: | tenía el código pegado
a columna 0, por debajo de la indentación del bloque YAML -- eso corta
el block scalar ahí mismo y Gitea terminaba ignorando el workflow
completo ("could not find expected ':'"), silenciosamente, desde el
commit de Semgrep.

Validado con un parser YAML real (no solo con builds de Docker) y
bash -n sobre los 20 steps del archivo.
2026-08-14 22:59:31 -05:00
devops c1b5f72a68 feat(devsecops): firmar la imagen del frontend con Cosign
Firma la imagen (solo el tag versionado, no :latest) después del push
exitoso, usando la llave privada desde secrets de Gitea Actions
(COSIGN_PRIVATE_KEY/COSIGN_PASSWORD, nunca en el repo ni en disco).
Verifica la firma como smoke test en el mismo pipeline contra
workloads/ecommerce/cosign.pub (pública, commiteada a propósito).

Firma solo con el par de llaves propio, sin publicar en el
transparency log público de Sigstore (--use-signing-config=false
--tlog-upload=false / --insecure-ignore-tlog=true) — registry privado,
no tiene sentido esa fuga de metadata.

Par de llaves generado y validado end-to-end (firma + verificación,
incluyendo que verificar con la llave incorrecta falla como se espera)
contra un registry local descartable antes de tocar nada real. Docs en
docs/devsecops/cosign.md, incluyendo qué falta para que un admission
controller verifique esto en el cluster (no implementado todavía).
2026-08-14 21:55:03 -05:00
devops b6038e06ca feat(devsecops): generar SBOM (Syft) de la imagen del frontend
Corre después del gate de CRITICAL de Trivy, sobre la imagen ya
construida. Genera CycloneDX y SPDX, publicados como artifact
sbom-v1.0.X en cada build.

Validado contra la imagen real: 3528 componentes CycloneDX / 228
paquetes SPDX. Documenta en docs/devsecops/sbom.md el propósito
(trazabilidad tipo "log4shell"), diferencia entre formatos, y un
hallazgo real (yarn empaquetado sin usarse, mismo patrón que el npm
sacado en el fix de Trivy).
2026-08-14 21:14:00 -05:00
devops 4aed9f6c5c feat(devsecops): agregar Semgrep SAST en modo auditoría al pipeline
Escanea workloads/ecommerce con rulesets públicos del registro de
Semgrep (p/typescript, p/react, p/nextjs, p/security-audit) vía la
imagen oficial semgrep/semgrep:1.173.0. Sin --error a propósito: siempre
termina en exit 0, solo reporta — primera vuelta para revisar juntos qué
reglas deberían pasar a bloquear más adelante.

Validado contra el código real: 0 hallazgos en 91 reglas / 72 archivos.
Documenta la herramienta en docs/devsecops/sast.md, incluyendo la
diferencia con gitleaks/trivy y qué significa (y qué no) un scan limpio.
2026-08-14 21:07:05 -05:00
devops df13233a29 feat(devsecops): agregar Trivy (imagen + IaC) al pipeline del frontend
trivy config sobre frontend.yaml (CRITICAL/HIGH/MEDIUM, informativo) y
trivy image sobre la imagen recién construida (CRITICAL bloquea con
--ignore-unfixed, HIGH solo informa), entre build (push:false, load:true)
y el push real al registry.

Fix real encontrado al validar contra la imagen real: el stage runner
heredaba npm/npx/corepack completos de la imagen base de Node sin
necesitarlos en runtime, trayendo CVE-2026-59873 (CRITICAL, node-tar
empaquetado en npm). Sacarlos del stage final baja CRITICAL de 1 a 0 y
HIGH fixable de 21 a 15 (las que quedan son de la propia app, ej. next
desactualizado, documentadas como pendiente sin bloquear).

Documenta ambos scans en docs/devsecops/trivy.md con los hallazgos
reales de este repo.
2026-08-14 20:43:09 -05:00
devops 422e9d257d feat(devsecops): agregar Gitleaks al pipeline del frontend
Corre en push y pull_request, antes del job build (needs: gitleaks).
Si detecta un secreto, exit-code=1 detiene el pipeline antes de
construir la imagen. Scan histórico completo del repo (249 commits)
confirmado limpio, corrido aparte de forma manual.

Documenta el step en docs/devsecops/gitleaks.md: qué es secret
scanning, por qué corre antes del build, cómo leer un hallazgo y
cómo manejar falsos positivos con allowlist.
2026-08-14 19:48:44 -05:00
devops fb5cf8bc98 feat(docs-portal): pipeline GitOps y manifiestos K8s para el portal MkDocs
Agrega lo que faltaba para desplegar workloads/docs-portal/ (ya existente
sin commitear): deployment/service/ingress + kustomization siguiendo el
patrón de workloads/nginx, Applications de workload y gobernanza
separadas, y el workflow de Gitea Actions (build+push a Gitea Registry,
bump de versión en el manifiesto) siguiendo el mismo patrón que
build.yaml/build-medusa.yaml.
2026-08-13 21:08:04 -05:00
devops 7939dc492c fix(ci): stabilize Medusa dependency installation
Build and Push Medusa / Construir y publicar Medusa (push) Failing after 4m59s
2026-08-01 02:21:44 -05:00
devops aa857bc2ae fase 1
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 9m23s
Build and Push Medusa / Construir y publicar Medusa (push) Failing after 15m12s
2026-07-31 23:27:01 -05:00
devops 097bcc1c5b Update .gitea/workflows/build.yaml
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 5m13s
2026-07-27 01:53:41 +00:00
devops 3421f856c7 Update .gitea/workflows/build.yaml
Conservé:

actions/checkout@v3
docker/login-action@v2
docker/build-push-action@v4
Secretos REGISTRY_USER y REGISTRY_PASSWORD
Versionamiento v1.0.${{ github.run_number }}
Imagen versionada y latest
Actualización automática de frontend.yaml
Commit [skip ci]
Timeout de 20 minutos

Las mejoras agregadas son:

Ya no construye imágenes por cambios exclusivos en frontend.yaml, ingress.yaml o patches/.
Elimina integration/ y archivos *.example.tsx únicamente dentro del runner, evitando el error de compilación anterior.
Comprueba que CategoryMenu.tsx, cuando exista:
lea los parámetros actuales de la URL;
contenga collection=Marvel;
contenga category=Mochilas;
esté realmente importado por otro componente, Header o Layout.
Evita que un pipeline antiguo actualice el manifiesto si ya existe un commit más nuevo.
2026-07-27 01:15:05 +00:00
devops 9569c94b6c Update .gitea/workflows/build.yaml
Build and Push Frontend / build (push) Failing after 2m11s
2026-07-24 05:58:04 +00:00
devops df603dd261 Update .gitea/workflows/build.yaml
Build and Push Frontend / build (push) Failing after 36s
2026-07-24 05:52:17 +00:00
devops 05fb19689e Update .gitea/workflows/build.yaml
Build and Push Frontend / build (push) Failing after 2m36s
2026-07-24 05:49:31 +00:00
devops 5e5038c2d6 Delete .gitea/workflows/catalog-sync.yaml 2026-07-24 03:49:26 +00:00
devops 54d2f208ae feat(ecommerce): release Ari Shopping Frontend v2
Build and Push Frontend / build (push) Successful in 1m57s
2026-07-18 16:34:01 -05:00
devops 0cfa4f847d Update .gitea/workflows/build.yaml
Build, Push and Validate Frontend / build (push) Successful in 8m42s
2026-07-18 03:05:39 +00:00
devops d79bb52c47 Update .gitea/workflows/build.yaml 2026-07-18 02:35:05 +00:00
devops 2f7ab7c0f8 Update .gitea/workflows/build.yaml
Build, Push and Validate Frontend / build (push) Failing after 59s
2026-07-18 01:31:43 +00:00
devops 7c11814e52 Update .gitea/workflows/build.yaml
Build, Push and Validate Frontend / build (push) Failing after 1m9s
2026-07-12 17:09:35 +00:00
devops dc1e5d8ac8 Update .gitea/workflows/build.yaml
Build, Push and Validate Frontend / build (push) Failing after 1m1s
2026-07-12 16:34:41 +00:00
devops 910554ead3 Update .gitea/workflows/build.yaml
Build, Push and Validate Frontend / build (push) Failing after 1m1s
ci: corregir validacion postdeploy y kubeconfig"
2026-07-12 16:25:24 +00:00
devops 59f3475820 Update .gitea/workflows/build.yaml 2026-07-12 16:19:21 +00:00
devops aea3a598c9 Update .gitea/workflows/build.yaml 2026-07-12 07:54:45 +00:00
devops 976d3fc9d4 Update .gitea/workflows/build.yaml 2026-07-12 07:38:03 +00:00
devops 67647ef68c Update .gitea/workflows/build.yaml 2026-07-12 07:35:50 +00:00
devops a9f57ecdc8 Update .gitea/workflows/build.yaml 2026-07-12 07:28:00 +00:00
devops 470ca07e35 Update .gitea/workflows/build.yaml 2026-07-12 07:24:14 +00:00
devops c6de443ce0 Update .gitea/workflows/build.yaml 2026-07-12 07:21:13 +00:00
devops 256f8383f6 Update .gitea/workflows/build.yaml 2026-07-12 07:16:33 +00:00
devops 34ea05eabc Update .gitea/workflows/build.yaml 2026-07-12 07:11:55 +00:00
devops 532e2a3060 Update .gitea/workflows/build.yaml 2026-07-12 07:02:42 +00:00
devops 5cb57f1328 Update .gitea/workflows/build.yaml 2026-07-12 06:47:44 +00:00
devops b0bfdee212 fix: move workflow to correct .gitea directory 2026-07-12 01:11:57 -05:00