Add DevSecOpsApp code with updated Jenkins pipeline for multi-environment deployment

This commit is contained in:
2025-11-30 15:24:19 +05:30
parent 30a2782a79
commit 3d49b0f4de
22 changed files with 22129 additions and 52 deletions

152
scripts/health-check.sh Executable file
View File

@@ -0,0 +1,152 @@
#!/bin/bash
# Health Check Script for DevSecOps Todo Application
# This script verifies that both frontend and backend services are running correctly
set -e # Exit on any error
echo "🏥 Starting health checks for DevSecOps Todo Application..."
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
BACKEND_URL="${BACKEND_URL:-http://localhost:3001}"
FRONTEND_URL="${FRONTEND_URL:-http://localhost:3000}"
MAX_RETRIES=5
RETRY_DELAY=2
# Function to check service health
check_service() {
local url=$1
local service_name=$2
local retries=0
echo "🔍 Checking $service_name at $url..."
while [ $retries -lt $MAX_RETRIES ]; do
if curl -f -s "$url/health" > /dev/null 2>&1; then
echo -e "${GREEN}$service_name is healthy${NC}"
return 0
else
retries=$((retries + 1))
echo -e "${YELLOW}$service_name not ready, attempt $retries/$MAX_RETRIES${NC}"
if [ $retries -lt $MAX_RETRIES ]; then
sleep $RETRY_DELAY
fi
fi
done
echo -e "${RED}$service_name health check failed after $MAX_RETRIES attempts${NC}"
return 1
}
# Function to check API endpoints
check_api_endpoints() {
echo "🔍 Testing API endpoints..."
# Test todos endpoint
if curl -f -s "$BACKEND_URL/api/todos" > /dev/null 2>&1; then
echo -e "${GREEN}✅ Todos API endpoint is working${NC}"
else
echo -e "${RED}❌ Todos API endpoint failed${NC}"
return 1
fi
# Test stats endpoint
if curl -f -s "$BACKEND_URL/api/stats" > /dev/null 2>&1; then
echo -e "${GREEN}✅ Stats API endpoint is working${NC}"
else
echo -e "${RED}❌ Stats API endpoint failed${NC}"
return 1
fi
return 0
}
# Function to test basic functionality
test_basic_functionality() {
echo "🧪 Testing basic functionality..."
# Test creating a todo
local response=$(curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"title":"Health Check Todo","priority":"low"}' \
"$BACKEND_URL/api/todos")
if echo "$response" | grep -q "Health Check Todo"; then
echo -e "${GREEN}✅ Todo creation test passed${NC}"
else
echo -e "${RED}❌ Todo creation test failed${NC}"
return 1
fi
return 0
}
# Main health check execution
main() {
echo "=================================================="
echo "🚀 DevSecOps Todo Application Health Check"
echo "=================================================="
local failed=0
# Check backend health
if ! check_service "$BACKEND_URL" "Backend"; then
failed=1
fi
# Check frontend health (if running on different port)
if [ "$FRONTEND_URL" != "$BACKEND_URL" ]; then
if ! check_service "$FRONTEND_URL" "Frontend"; then
failed=1
fi
fi
# Test API endpoints
if ! check_api_endpoints; then
failed=1
fi
# Test basic functionality
if ! test_basic_functionality; then
failed=1
fi
echo "=================================================="
if [ $failed -eq 0 ]; then
echo -e "${GREEN}🎉 All health checks passed!${NC}"
echo -e "${GREEN}📊 Application is ready for use${NC}"
exit 0
else
echo -e "${RED}💥 Some health checks failed!${NC}"
echo -e "${RED}🔧 Please check the application logs${NC}"
exit 1
fi
}
# Show usage if help requested
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
echo "DevSecOps Todo Application Health Check Script"
echo ""
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Environment Variables:"
echo " BACKEND_URL Backend service URL (default: http://localhost:3001)"
echo " FRONTEND_URL Frontend service URL (default: http://localhost:3000)"
echo ""
echo "Options:"
echo " -h, --help Show this help message"
echo ""
echo "Examples:"
echo " $0 # Check local services"
echo " BACKEND_URL=http://api.example.com $0 # Check remote backend"
exit 0
fi
# Run main function
main "$@"