Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fed5dfc1c1 |
@@ -129,9 +129,16 @@ jobs:
|
||||
# Cambio 2026-09-14: todo push a main promueve a STAGING
|
||||
# automaticamente (workloads/ecommerce-staging), no a Produccion
|
||||
# directo -- decision del usuario para dejar de probar cambios en
|
||||
# vivo contra Prod. Promover a Produccion (workloads/ecommerce) es
|
||||
# una accion manual aparte, ver scripts/promote-to-production.sh.
|
||||
# vivo contra Prod.
|
||||
# Cambio 2026-09-20: la promocion de Staging a Produccion (antes
|
||||
# scripts/promote-to-production.sh, manual con confirmacion
|
||||
# interactiva) ahora corre sola en este mismo job -- ver el step
|
||||
# "Promover a Produccion (CD)" mas abajo, justo despues del de
|
||||
# Staging. Decision explicita del usuario: cero gate humano entre
|
||||
# Staging y Produccion. El script manual queda solo como
|
||||
# herramienta de rollback/excepcion, ya no es el camino normal.
|
||||
MANIFEST_FILE: workloads/ecommerce-staging/frontend/patches/deployment.yaml
|
||||
PROD_MANIFEST_FILE: workloads/ecommerce/frontend/patches/deployment.yaml
|
||||
KUSTOMIZE_DIR: workloads/ecommerce-staging/frontend
|
||||
IMAGE_NAME: gitea.cruzcloud.net/devops/ecommerce-frontend
|
||||
|
||||
@@ -604,6 +611,48 @@ jobs:
|
||||
# sobrescribir commits ajenos o promocionar una versión antigua.
|
||||
git push origin HEAD:main
|
||||
|
||||
# Automatiza lo que antes era scripts/promote-to-production.sh (paso
|
||||
# manual con confirmación interactiva, read -rp). Decisión del
|
||||
# usuario 2026-09-20: cero pasos manuales entre Staging y
|
||||
# Producción — la misma imagen que acaba de promocionar a Staging
|
||||
# arriba se promueve sola a Producción, sin gate humano en el
|
||||
# medio. Mismo sed/perl que el script manual (mismo MANIFEST, otro
|
||||
# archivo), corriendo como un segundo commit separado justo
|
||||
# después del de Staging — no se pisan en un solo commit porque
|
||||
# Staging y Producción son releases conceptualmente distintos
|
||||
# (permite revertir uno sin tocar el otro).
|
||||
- name: Promover a Producción (CD)
|
||||
if: steps.promotion.outputs.promote == 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
VERSION="${{ steps.vars.outputs.VERSION }}"
|
||||
|
||||
git config user.name "Cristian Felipe"
|
||||
git config user.email "[email protected]"
|
||||
|
||||
# Re-fetch: el step de Staging de arriba ya pusheó un commit a
|
||||
# main en este mismo job -- sin este refresh, este checkout
|
||||
# local queda un commit atrás y el push de abajo se rechaza.
|
||||
git fetch origin main
|
||||
git checkout -B main origin/main
|
||||
|
||||
sed -i -E "s|(image: ${IMAGE_NAME}:).*|\1${VERSION}|g" "${PROD_MANIFEST_FILE}"
|
||||
|
||||
perl -0777 -pi -e "s/(- name: APP_VERSION\n\s*value: ).*/\${1}${VERSION}/" "${PROD_MANIFEST_FILE}"
|
||||
|
||||
git add "${PROD_MANIFEST_FILE}"
|
||||
|
||||
if git diff --cached --quiet; then
|
||||
echo "Producción ya está en ${VERSION}."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
git commit -m "chore: promote ${VERSION} to production [skip ci]"
|
||||
|
||||
git push origin HEAD:main
|
||||
|
||||
- name: Resumen del pipeline
|
||||
if: always()
|
||||
shell: bash
|
||||
|
||||
Reference in new issue
Block a user