Update .gitea/workflows/build.yaml
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 5m13s
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 5m13s
This commit is contained in:
+66
-36
@@ -99,56 +99,86 @@ jobs:
|
|||||||
echo "Contexto listo:"
|
echo "Contexto listo:"
|
||||||
du -sh "${APP_DIR}"
|
du -sh "${APP_DIR}"
|
||||||
|
|
||||||
# Diagnóstico temprano para el hotfix de navegación.
|
# Valida los tres componentes reales que controlan la navegación.
|
||||||
# No modifica el frontend, pero evita publicar silenciosamente un menú
|
# No busca CategoryMenu.tsx porque ese archivo era código sin uso.
|
||||||
# que existe y no está conectado al Header/Layout real.
|
- name: Validar navegación real del catálogo
|
||||||
- name: Validar integración del menú de categorías
|
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
MENU_FILE="$(
|
NAVBAR_FILE="${APP_DIR}/components/layout/navbar.tsx"
|
||||||
find "${APP_DIR}" -type f -name 'CategoryMenu.tsx' -print -quit
|
CATALOG_FILE="${APP_DIR}/components/catalog/catalog-client.tsx"
|
||||||
)"
|
PAGE_FILE="${APP_DIR}/app/catalog/page.tsx"
|
||||||
|
|
||||||
if [ -z "${MENU_FILE}" ]; then
|
for FILE in "${NAVBAR_FILE}" "${CATALOG_FILE}" "${PAGE_FILE}"; do
|
||||||
echo "AVISO: no se encontró CategoryMenu.tsx."
|
if [ ! -f "${FILE}" ]; then
|
||||||
echo "El build continuará usando el menú actualmente integrado."
|
echo "ERROR: no existe ${FILE}"
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "CategoryMenu encontrado: ${MENU_FILE}"
|
|
||||||
|
|
||||||
if ! grep -Eq 'useSearchParams|URLSearchParams|window\.location\.search' "${MENU_FILE}"; then
|
|
||||||
echo "ERROR: CategoryMenu.tsx no deriva el estado activo desde la URL."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if ! grep -q 'collection=Marvel' "${MENU_FILE}"; then
|
echo "Validando Navbar real: ${NAVBAR_FILE}"
|
||||||
echo "ERROR: falta collection=Marvel para Acción y aventura."
|
|
||||||
|
grep -q 'useSearchParams' "${NAVBAR_FILE}" || {
|
||||||
|
echo "ERROR: navbar.tsx no usa useSearchParams."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
}
|
||||||
|
|
||||||
if ! grep -q 'category=Mochilas' "${MENU_FILE}"; then
|
grep -q 'currentCategory' "${NAVBAR_FILE}" || {
|
||||||
echo "ERROR: falta category=Mochilas."
|
echo "ERROR: navbar.tsx no calcula currentCategory."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
}
|
||||||
|
|
||||||
MENU_USAGE="$(
|
grep -q 'currentCollection' "${NAVBAR_FILE}" || {
|
||||||
grep -Rsl --include='*.tsx' --include='*.ts' 'CategoryMenu' "${APP_DIR}/app" "${APP_DIR}/src" "${APP_DIR}/components" 2>/dev/null |
|
echo "ERROR: navbar.tsx no calcula currentCollection."
|
||||||
grep -Fvx "${MENU_FILE}" |
|
|
||||||
head -n 1 ||
|
|
||||||
true
|
|
||||||
)"
|
|
||||||
|
|
||||||
if [ -z "${MENU_USAGE}" ]; then
|
|
||||||
echo "ERROR: CategoryMenu.tsx existe, pero ningún Header/Layout lo importa."
|
|
||||||
echo "Debe renderizarse <CategoryMenu /> en el encabezado que ve el usuario."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
}
|
||||||
|
|
||||||
echo "CategoryMenu integrado desde: ${MENU_USAGE}"
|
grep -q 'collection=Marvel' "${NAVBAR_FILE}" || {
|
||||||
echo "Validación del menú: OK"
|
echo "ERROR: falta collection=Marvel en navbar.tsx."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
grep -q 'category=Mochilas' "${NAVBAR_FILE}" || {
|
||||||
|
echo "ERROR: falta category=Mochilas en navbar.tsx."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
grep -q 'aria-current={active ? "page" : undefined}' "${NAVBAR_FILE}" || {
|
||||||
|
echo "ERROR: navbar.tsx no expone correctamente el menú activo."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Validando sincronización del catálogo: ${CATALOG_FILE}"
|
||||||
|
|
||||||
|
grep -q 'useEffect' "${CATALOG_FILE}" || {
|
||||||
|
echo "ERROR: catalog-client.tsx no usa useEffect."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
grep -q 'setCategory(initialCategory' "${CATALOG_FILE}" || {
|
||||||
|
echo "ERROR: catalog-client.tsx no sincroniza initialCategory."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
grep -q 'setCollection(initialCollection' "${CATALOG_FILE}" || {
|
||||||
|
echo "ERROR: catalog-client.tsx no sincroniza initialCollection."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
grep -q 'setQuery(initialQuery' "${CATALOG_FILE}" || {
|
||||||
|
echo "ERROR: catalog-client.tsx no sincroniza initialQuery."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Validando remontaje por parámetros: ${PAGE_FILE}"
|
||||||
|
|
||||||
|
grep -q 'key={`${category}:${collection}:${query}:${section}`}' "${PAGE_FILE}" || {
|
||||||
|
echo "ERROR: app/catalog/page.tsx no remonta CatalogClient al cambiar la URL."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "OK: navegación real del catálogo validada."
|
||||||
|
|
||||||
- name: Login en Gitea Registry
|
- name: Login en Gitea Registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v2
|
||||||
|
|||||||
Reference in New Issue
Block a user