fix(ci): condicion de carrera en el chequeo de promocion GitOps
Build and Push Medusa / Escaneo de Secretos (Gitleaks) (push) Successful in 22s
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (push) Successful in 26s
Build and Push Docs Portal / Escaneo de Secretos (Gitleaks) (push) Successful in 28s
Build and Push Medusa / Construir y publicar Medusa (push) Successful in 17m19s
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 8m23s
Build and Push Docs Portal / Construir y publicar Docs Portal (push) Successful in 6m18s

Con el runner corriendo 1 job a la vez (capacity: 1), cuando 2+
pipelines comparten el mismo commit disparador, el primero en terminar
deja su propio commit de GitOps en main -- los siguientes veian 'main
ya no es igual a mi commit' y se saltaban su propia promocion, aunque
era seguro promocionar. Visto en vivo: Frontend construyo, escaneo y
firmo v1.0.119 pero el manifiesto seguia en v1.0.104 (Promocion GitOps:
false). Fix en los 3 workflows: git merge-base --is-ancestor en vez de
comparacion exacta de SHA. Bump manual de frontend a v1.0.119 (la
version que ya estaba lista, sin desplegar). Documentado el limite
conocido de este fix en el playbook de la migracion.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011FqYP3Wf1W63Qmh7qgXAAT
This commit is contained in:
devopsandClaude Sonnet 5 committed 2026-08-17 01:47:04 -05:00
1 parent 788505a1bb
commit 29021bff70
5 files changed
+83 -4

No files matched your search

+12 -1
View File
@@ -489,6 +489,17 @@ jobs:
# Evita que una ejecución antigua actualice frontend.yaml después de que
# ya exista un commit más reciente en main.
#
# merge-base --is-ancestor, no comparación exacta de SHA: cuando 2+
# pipelines comparten el mismo commit disparador y el runner los
# corre en serie (capacity: 1), el primero en terminar ya dejó su
# propio commit de GitOps en main -- con comparación exacta, los
# demás ven "main ya no es igual a mi commit" y se saltan la
# promoción sin necesidad (visto en vivo 2026-08-17, ver
# docs/playbooks/migracion-platform-templates-2026-08.md). Con
# is-ancestor, mientras el commit que disparó ESTE pipeline siga
# siendo ancestro de main, promociona igual -- solo bloquea si de
# verdad hubo un rebase/force-push que lo descartó.
- name: Verificar promoción segura
id: promotion
shell: bash
@@ -503,7 +514,7 @@ jobs:
echo "Commit del pipeline: ${CURRENT_SHA}"
echo "Último commit remoto: ${REMOTE_SHA}"
if [ "${CURRENT_SHA}" = "${REMOTE_SHA}" ]; then
if git merge-base --is-ancestor "${CURRENT_SHA}" origin/main; then
echo "promote=true" >> "$GITHUB_OUTPUT"
echo "La imagen puede promocionarse."
else