pipeline {
  agent any

  options {
    timestamps()
    disableConcurrentBuilds()
  }

  stages {
    stage('Checkout') {
      steps {
        checkout scm
      }
    }

    stage('Production readiness') {
      steps {
        sh 'chmod +x scripts/ci/*.sh'
        sh 'bash scripts/ci/ci-readiness.sh .'
        sh 'bash scripts/ci/validate-docker-compose.sh .'
      }
    }

    stage('Compose smoke') {
      steps {
        sh '''
          set -euo pipefail
          mkdir -p dist
          sed '/exclude_from_hc:/d' docker-compose.yml > dist/docker-compose.coolify.yml
          docker compose -f dist/docker-compose.coolify.yml config -q
          VERSION="$(grep -E '^ERPNEXT_VERSION=' example.env | cut -d= -f2)"
          docker pull "frappe/erpnext:${VERSION}"
          echo "frappe/erpnext:${VERSION} OK"
        '''
      }
    }
  }

  post {
    success {
      archiveArtifacts artifacts: 'dist/docker-compose.coolify.yml', fingerprint: true, onlyIfSuccessful: true
    }
  }
}
