Test: Pipeline proyectosacc para laboratorio local
This commit is contained in:
Vendored
+127
-38
@@ -1,65 +1,154 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent {
|
agent any
|
||||||
docker {
|
|
||||||
image 'amazon/aws-cli:latest'
|
|
||||||
args '-u root --entrypoint="" --network ci-network -v /var/run/docker.sock:/var/run/docker.sock'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
AWS_ACCESS_KEY_ID = "000000000000"
|
AWS_ACCESS_KEY_ID = "000000000000"
|
||||||
AWS_SECRET_ACCESS_KEY = "test"
|
AWS_SECRET_ACCESS_KEY = "test"
|
||||||
AWS_DEFAULT_REGION = "us-east-1"
|
AWS_DEFAULT_REGION = "us-east-1"
|
||||||
AWS_ENDPOINT = "http://floci:4566"
|
AWS_ENDPOINT_URL = "http://floci:4566"
|
||||||
APP_NAME = "demo-app"
|
ENV = "local"
|
||||||
REGISTRY = "172.16.20.100:5000"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Analisis de Calidad') {
|
stage('01_image-setup') {
|
||||||
steps {
|
steps {
|
||||||
echo "Simulando analisis con SonarQube..."
|
echo "=== Setup del entorno local ==="
|
||||||
withSonarQubeEnv('SonarLocal') {
|
|
||||||
echo "Enviando metricas a SonarQube (simulado)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Construccion y Empaquetado') {
|
|
||||||
steps {
|
|
||||||
echo "Construyendo imagen Docker..."
|
|
||||||
sh '''
|
sh '''
|
||||||
cat > Dockerfile <<'DOCKER'
|
echo "✓ Docker disponible: $(docker --version)"
|
||||||
FROM nginx:alpine
|
echo "✓ AWS CLI disponible: $(aws --version)"
|
||||||
RUN echo "Hola desde Floci" > /usr/share/nginx/html/index.html
|
|
||||||
DOCKER
|
|
||||||
'''
|
'''
|
||||||
sh "docker build -t \${REGISTRY}/\${APP_NAME}:latest ."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Publicar en Registry Local') {
|
stage('02_local-aws-setup') {
|
||||||
steps {
|
steps {
|
||||||
echo "Subiendo artefacto..."
|
echo "=== Configurando AWS Local (Floci) ==="
|
||||||
sh "docker push \${REGISTRY}/\${APP_NAME}:latest"
|
sh '''
|
||||||
echo "Imagen publicada."
|
bash scripts/aws-local-setup.sh local
|
||||||
|
'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Despliegue en Infraestructura (Floci AWS)') {
|
stage('03_test-s3-operations') {
|
||||||
steps {
|
steps {
|
||||||
echo "Desplegando en AWS emulado..."
|
echo "=== Probando operaciones S3 en Floci ==="
|
||||||
sh 'aws --endpoint-url=\${AWS_ENDPOINT} s3 mb s3://\${APP_NAME}-bucket || true'
|
sh '''
|
||||||
sh 'echo "Configuracion de produccion" > config.json'
|
export AWS_ACCESS_KEY_ID="000000000000"
|
||||||
sh 'aws --endpoint-url=\${AWS_ENDPOINT} s3 cp config.json s3://\${APP_NAME}-bucket/'
|
export AWS_SECRET_ACCESS_KEY="test"
|
||||||
sh 'aws --endpoint-url=\${AWS_ENDPOINT} s3 ls s3://\${APP_NAME}-bucket/'
|
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 {
|
post {
|
||||||
always {
|
always {
|
||||||
echo "Pipeline finalizado."
|
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Ó"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Executable
+31
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ENV="${1:-dev}"
|
||||||
|
|
||||||
|
echo "=== AWS Local Setup (Floci) ==="
|
||||||
|
echo "Ambiente : $ENV"
|
||||||
|
echo "Region : us-east-1"
|
||||||
|
echo "Endpoint : http://floci:4566"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Credenciales para Floci (AWS emulator)
|
||||||
|
export AWS_ACCESS_KEY_ID="000000000000"
|
||||||
|
export AWS_SECRET_ACCESS_KEY="test"
|
||||||
|
export AWS_DEFAULT_REGION="us-east-1"
|
||||||
|
export AWS_ENDPOINT_URL="http://floci:4566"
|
||||||
|
|
||||||
|
echo "✓ Credenciales locales configuradas"
|
||||||
|
echo " AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}"
|
||||||
|
echo " Endpoint: ${AWS_ENDPOINT_URL}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Verificar conexión a Floci
|
||||||
|
if aws --endpoint-url=${AWS_ENDPOINT_URL} s3 ls > /dev/null 2>&1; then
|
||||||
|
echo "✓ Conexión a Floci (S3) exitosa"
|
||||||
|
else
|
||||||
|
echo "⚠ No se pudo conectar a Floci S3"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Setup completado ==="
|
||||||
Executable
+49
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ENV="${1:-dev}"
|
||||||
|
EC2_HOST="172.16.20.100"
|
||||||
|
|
||||||
|
echo "╔══════════════════════════════════════════╗"
|
||||||
|
echo "║ DEPLOY LOCAL - SACC SIMULATION ║"
|
||||||
|
echo "╚══════════════════════════════════════════╝"
|
||||||
|
echo ""
|
||||||
|
echo "Ambiente: ${ENV}"
|
||||||
|
echo "Servidor: ${EC2_HOST}"
|
||||||
|
echo "Fecha: $(date)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "=== PASO 1: Verificar contenedores ==="
|
||||||
|
docker ps --format "table {{.Names}}\t{{.Status}}"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== PASO 2: Simular subida de artefactos ==="
|
||||||
|
echo "✓ JARs compilados (simulado)"
|
||||||
|
echo "✓ Frontend build (simulado)"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== PASO 3: Verificar servicios ==="
|
||||||
|
echo "Servicios que se desplegarían:"
|
||||||
|
echo " - api-sacc4-authentication (puerto 8080)"
|
||||||
|
echo " - api-sacc4-users (puerto 8081)"
|
||||||
|
echo " - api-sacc4-tickets (puerto 8082)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "=== PASO 4: Health Check Local ==="
|
||||||
|
# Verificar si hay algo escuchando en los puertos
|
||||||
|
for port in 8080 8081 8082 8083 8084 8085; do
|
||||||
|
if nc -zv ${EC2_HOST} ${port} 2>/dev/null; then
|
||||||
|
echo " ✓ Puerto ${port} - ACTIVO"
|
||||||
|
else
|
||||||
|
echo " ⚠ Puerto ${port} - No responde (esperado en laboratorio)"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ DEPLOY LOCAL SIMULADO COMPLETADO"
|
||||||
|
echo ""
|
||||||
|
echo "En producción este paso:"
|
||||||
|
echo " 1. Subiría JARs a EC2"
|
||||||
|
echo " 2. Reiniciaría servicios systemd"
|
||||||
|
echo " 3. Verificaría health checks"
|
||||||
|
echo ""
|
||||||
Executable
+42
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
TF_BACKEND_BUCKET="${TF_BACKEND_BUCKET:-local-terraform-state}"
|
||||||
|
TF_BACKEND_KEY="${TF_BACKEND_KEY:-proyectosacc/local/terraform.tfstate}"
|
||||||
|
TF_BACKEND_REGION="${TF_BACKEND_REGION:-us-east-1}"
|
||||||
|
|
||||||
|
echo "=== Terraform Local Init (Floci) ==="
|
||||||
|
echo "Backend Bucket : ${TF_BACKEND_BUCKET}"
|
||||||
|
echo "Backend Key : ${TF_BACKEND_KEY}"
|
||||||
|
echo "Backend Region : ${TF_BACKEND_REGION}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Configurar credenciales para Floci
|
||||||
|
export AWS_ACCESS_KEY_ID="000000000000"
|
||||||
|
export AWS_SECRET_ACCESS_KEY="test"
|
||||||
|
export AWS_DEFAULT_REGION="us-east-1"
|
||||||
|
export AWS_ENDPOINT_URL="http://floci:4566"
|
||||||
|
|
||||||
|
# Crear bucket S3 para estado si no existe
|
||||||
|
aws --endpoint-url=${AWS_ENDPOINT_URL} s3 mb s3://${TF_BACKEND_BUCKET} 2>/dev/null || echo "Bucket ya existe o error (ignorado)"
|
||||||
|
|
||||||
|
# Inicializar Terraform con backend S3 local
|
||||||
|
cat > backend.tf <<BACKEND
|
||||||
|
terraform {
|
||||||
|
backend "s3" {
|
||||||
|
bucket = "${TF_BACKEND_BUCKET}"
|
||||||
|
key = "${TF_BACKEND_KEY}"
|
||||||
|
region = "${TF_BACKEND_REGION}"
|
||||||
|
endpoint = "http://floci:4566"
|
||||||
|
access_key = "000000000000"
|
||||||
|
secret_key = "test"
|
||||||
|
skip_credentials_validation = true
|
||||||
|
skip_metadata_api_check = true
|
||||||
|
skip_region_validation = true
|
||||||
|
force_path_style = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BACKEND
|
||||||
|
|
||||||
|
echo "✓ Backend local configurado"
|
||||||
|
echo "=== Terraform Local Init completado ==="
|
||||||
Reference in New Issue
Block a user