diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..6eb240d --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,57 @@ +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" } + } +}