pipeline { agent any environment { AWS_ACCESS_KEY_ID = "000000000000" AWS_SECRET_ACCESS_KEY = "test" AWS_DEFAULT_REGION = "us-east-1" AWS_ENDPOINT_URL = "http://floci:4566" ENV = "local" } stages { stage('01_image-setup') { steps { echo "=== Setup del entorno local ===" sh ''' echo "✓ Docker disponible: $(docker --version)" echo "✓ AWS CLI disponible: $(aws --version)" ''' } } stage('02_local-aws-setup') { steps { echo "=== Configurando AWS Local (Floci) ===" sh ''' bash scripts/aws-local-setup.sh local ''' } } stage('03_test-s3-operations') { steps { echo "=== Probando operaciones S3 en Floci ===" sh ''' export AWS_ACCESS_KEY_ID="000000000000" export AWS_SECRET_ACCESS_KEY="test" export AWS_DEFAULT_REGION="us-east-1" echo "Creando bucket de prueba..." aws --endpoint-url=http://floci:4566 s3 mb s3://proyectosacc-test-bucket || true echo "Listando buckets..." aws --endpoint-url=http://floci:4566 s3 ls echo "Subiendo archivo de prueba..." echo "test content" > /tmp/test-file.txt aws --endpoint-url=http://floci:4566 s3 cp /tmp/test-file.txt s3://proyectosacc-test-bucket/ echo "Verificando contenido..." aws --endpoint-url=http://floci:4566 s3 ls s3://proyectosacc-test-bucket/ echo "✓ Operaciones S3 completadas" ''' } } stage('04_simular-build') { steps { echo "=== Simulando build de aplicación ===" sh ''' echo "✓ Compilando frontend (simulado)" echo "✓ Compilando backend JARs (simulado)" mkdir -p build/libs echo "simulated-jar" > build/libs/app.jar echo "✓ Artefactos generados" ''' } } stage('05_publish-local') { steps { echo "=== Publicando artefactos localmente ===" sh ''' export AWS_ACCESS_KEY_ID="000000000000" export AWS_SECRET_ACCESS_KEY="test" export AWS_DEFAULT_REGION="us-east-1" echo "Subiendo a S3 local..." aws --endpoint-url=http://floci:4566 s3 cp build/libs/app.jar s3://proyectosacc-test-bucket/artifacts/ || true echo "Subiendo frontend a S3..." echo "frontend-content" > /tmp/frontend.zip aws --endpoint-url=http://floci:4566 s3 cp /tmp/frontend.zip s3://proyectosacc-test-bucket/frontend/ || true echo "✓ Publish completado" ''' } } stage('06_deploy-local') { steps { echo "=== Ejecutando deploy local ===" sh ''' bash scripts/deploy-local.sh local ''' } } stage('07_health-check') { steps { echo "=== Health Check ===" sh ''' echo "Verificando servicios locales..." # Verificar Jenkins if curl -sf http://jenkins:8080/login > /dev/null; then echo "✓ Jenkins - OK" fi # Verificar Gitea if curl -sf http://gitea:3000 > /dev/null; then echo "✓ Gitea - OK" fi # Verificar SonarQube if curl -sf http://sonarqube:9000 > /dev/null; then echo "✓ SonarQube - OK" fi # Verificar Registry if curl -sf http://registry:5000/v2/ > /dev/null; then echo "✓ Registry - OK" fi # Verificar Floci if curl -sf http://floci:4566 > /dev/null; then echo "✓ Floci (AWS) - OK" fi echo "✓ Todos los servicios del laboratorio están activos" ''' } } } post { always { echo "=== Pipeline de prueba completado ===" echo "El pipeline ha demostrado:" echo " 1. Configuración de credenciales AWS (Floci)" echo " 2. Operaciones S3 (create bucket, upload, list)" echo " 3. Simulación de build y publish" echo " 4. Deploy local simulado" echo " 5. Health check de todos los servicios" } success { echo "✅ PIPELINE EXITOSO" } failure { echo "❌ PIPELINE FALLÓ" } } }