pipeline { agent any options { timestamps() buildDiscarder(logRotator(numToKeepStr: '20')) timeout(time: 10, unit: 'MINUTES') } stages { stage('Checkout info') { steps { script { echo "Branch: ${env.BRANCH_NAME ?: 'n/a'}" echo "Commit: ${env.GIT_COMMIT ?: 'n/a'}" echo "Build : #${env.BUILD_NUMBER} on ${env.NODE_NAME}" } sh 'git log -1 --pretty=fuller || true' } } stage('Repo layout') { steps { sh ''' echo "=== top-level ===" ls -la | head -30 echo echo "=== compose files ===" ls -la docker-compose*.yml 2>/dev/null || true ''' } } stage('Validate compose') { steps { sh ''' if command -v docker >/dev/null 2>&1; then echo "docker version:" docker --version echo echo "=== compose config (syntax only, no apply) ===" docker compose -f docker-compose.yml config --quiet \ && echo "OK: docker-compose.yml is valid" \ || echo "WARN: compose validation failed (non-fatal for now)" else echo "docker not available in this build environment, skipping" fi ''' } } } post { success { echo "SUCCESS — no deployment performed (by design)" } failure { echo "FAILED — check logs" } } }