Files
Jenkins CI 71be2abd2e Add complete SACC v4 infrastructure project
- Terraform modules: VPC, EC2, RDS, S3, CloudFront, Route53, Lambda, IAM, Security Groups
- Ansible playbooks for server configuration
- Scripts: create-test-environment.sh, destroy-test-environment.sh, validate-environment.sh
- Documentation: README, QUICKSTART, AGENTS
- Jenkins pipeline for automated deployment
- Jenkins pipeline for environment destruction
2026-06-03 04:39:01 +00:00

5.8 KiB

Pipeline Multi-Entorno - SACC v4

=================================

Este pipeline de Bitbucket permite desplegar SACC v4 en dos entornos diferentes usando el mismo código base, cambiando solo las variables según la rama.

Flujo de Trabajo por Ramas

┌─────────────────────────────────────────────────────────────┐
│  RAMA 'test' / 'develop'                                    │
│  → Despliegue AUTOMÁTICO a TEST                            │
│  → Cuenta AWS: 668889063715                                │
│  → Variables: environments/test/terraform.tfvars           │
│  → Workspace Terraform: test                               │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  RAMA 'main' / 'master'                                     │
│  → Despliegue MANUAL a PRODUCCIÓN                          │
│  → Requiere aprobación en Bitbucket                        │
│  → Cuenta AWS: 523761210517                                │
│  → Variables: environments/prod/terraform.tfvars           │
│  → Workspace Terraform: prod                               │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  PULL REQUESTS                                              │
│  → Solo validación (no despliegue)                         │
│  → Terraform validate + plan                               │
└─────────────────────────────────────────────────────────────┘

Variables de Repositorio Requeridas

Configurar estas variables en Bitbucket > Repositorio > Settings > Repository variables:

Para TEST (Rama test/develop)

Variable Descripción
TEST_AWS_ACCESS_KEY_ID Access Key cuenta 668889063715
TEST_AWS_SECRET_ACCESS_KEY Secret Key cuenta 668889063715
TEST_AWS_SESSION_TOKEN Session Token (si aplica)

Para PROD (Rama main/master)

Variable Descripción
PROD_AWS_ACCESS_KEY_ID Access Key cuenta 523761210517
PROD_AWS_SECRET_ACCESS_KEY Secret Key cuenta 523761210517
PROD_AWS_SESSION_TOKEN Session Token (si aplica)

Opcionales (Notificaciones)

Variable Descripción
TELEGRAM_BOT_TOKEN Token del bot de Telegram
TELEGRAM_CHAT_ID ID del chat para notificaciones

Estructura de Archivos

iac-duplicate/
├── terraform/
│   ├── main.tf                    # Código base (igual para ambos)
│   ├── variables.tf               # Variables definidas
│   ├── environments/
│   │   ├── test/
│   │   │   └── terraform.tfvars   # Valores TEST
│   │   └── prod/
│   │       └── terraform.tfvars   # Valores PROD
│   └── modules/                   # Módulos reutilizables
├── ansible/
│   └── playbooks/
│       └── site.yml               # Configuración post-deploy
└── bitbucket/
    └── bitbucket-pipelines.yml    # Este pipeline

Cómo Desplegar

A TEST (Automático)

# 1. Hacer cambios en la rama test
git checkout test
git add .
git commit -m "feat: nueva funcionalidad"
git push origin test

# 2. Bitbucket despliega automáticamente
#    - Terraform Apply a cuenta 668889063715
#    - Ansible configura el servidor
#    - Health checks automáticos

A PRODUCCIÓN (Manual)

# 1. Crear PR de test → main
# 2. Revisar y aprobar PR
# 3. Merge a main

# 4. En Bitbucket, ir a Pipelines
# 5. Ver pipeline de la rama main
# 6. Clic en "Run" para aprobar el despliegue a PROD
# 7. Esperar validación manual

Workspaces Terraform

El pipeline usa workspaces de Terraform para aislar estados:

# TEST
cd terraform
terraform workspace select test
terraform plan -var-file="environments/test/terraform.tfvars"

# PROD
cd terraform
terraform workspace select prod
terraform plan -var-file="environments/prod/terraform.tfvars"

Custom Pipelines

Destruir entorno TEST

# En Bitbucket > Pipelines > Run pipeline
# Seleccionar "destroy-test"
# ⚠️ Esto elimina TODO el entorno de test

Seguridad

  • PROD requiere aprobación manual (trigger: manual)
  • TEST se destruye automáticamente (scheduling)
  • Variables separadas por entorno
  • Workspaces aislados en Terraform
  • Health checks en todos los puertos (8080-8085)

Troubleshooting

Problema Solución
"Access Denied" en PROD Verificar credenciales PROD_AWS_*
"Workspace not found" Ejecutar terraform workspace new test/prod
"Port 808X failed" Verificar que los JAR estén desplegados en EC2
"Nginx not responding" Revisar systemctl status nginx en EC2

Notas

  • El pipeline usa la misma imagen Docker ccsoft/ccsoft-pipeline:latest
  • Terraform workspaces evitan conflicto de estados
  • Los artifacts se pasan entre steps automáticamente
  • Las notificaciones Telegram son opcionales