Problema:
- El pipeline fallaba con 'Error acquiring the state lock' cuando un proceso
anterior de Terraform no liberaba el lock correctamente
- Los locks bloqueados requerían intervención manual
Solución implementada:
1. Nuevo script scripts/terraform-lock-cleanup.sh:
- Verifica locks existentes en DynamoDB antes de ejecutar Terraform
- Calcula antigüedad del lock (default: 30 minutos)
- Elimina locks bloqueados automáticamente
- Espera si el lock es reciente (operación en curso legítima)
2. Nuevo step 02_pre_terraform_check:
- Ejecuta antes del step 03_terraform
- Instala AWS CLI y configura credenciales
- Limpia locks bloqueados antes de iniciar Terraform
3. Agregado -lock-timeout=5m a comandos Terraform:
- terraform plan -lock-timeout=5m
- terraform apply -lock-timeout=5m
- Permite esperar si hay una operación legítima en curso
4. Aplicado a ambas ramas:
- developer: cleanup para entorno dev
- master: cleanup para entorno prod
Beneficios:
- Pipeline más robusto y autónomo
- Menos intervención manual para locks bloqueados
- Mejor manejo de concurrencia entre pipelines
- Previene corrupción de estado por locks huérfanos
Refs: Build #64 falló por state lock en DynamoDB