// ============================================
// DWF-CLI Docs Jenkins Pipeline
// ============================================

pipeline {
    agent any

    environment {
        GIT_REPO = 'https://gitee.com/tsinghua-nercbds/dwf-cli.git'
        GIT_BRANCH = 'develop'
        DEPLOY_DIR = '/opt/apache-tomcat/webapps/dwf-cli-docs'
        DWF_INCLUDE_API_DOCS = 'true'
        PATH = "/root/.local/bin:/usr/bin:/usr/local/bin:${env.PATH}"
    }

    stages {
        stage('Checkout') {
            steps {
                echo '📥 拉取代码...'
                git branch: env.GIT_BRANCH, url: env.GIT_REPO
            }
        }

        stage('Setup Environment') {
            steps {
                sh '''
                    echo "🔧 检查环境..."

                    echo "✅ python3 $(python3 --version)"
                    echo "✅ uv $(uv --version)"
                '''
            }
        }

        stage('Install Dependencies') {
            steps {
                sh '''
                    echo "📦 安装依赖..."
                    uv sync
                '''
            }
        }

        stage('Build Docs') {
            steps {
                sh '''
                    echo "🏗️ 构建文档..."
                    uv run mkdocs build
                '''
            }
        }

        stage('Deploy') {
            steps {
                sh '''
                    echo "🚀 部署到 Tomcat..."

                    rm -rf ${DEPLOY_DIR}
                    mkdir -p ${DEPLOY_DIR}
                    cp -r ${WORKSPACE}/site/* ${DEPLOY_DIR}/

                    echo "✅ 部署完成"
                '''
            }
        }

        stage('Health Check') {
            steps {
                script {
                    echo "🏥 健康检查..."

                    def maxAttempts = 5
                    def attempt = 0

                    while (attempt < maxAttempts) {
                        try {
                            def response = sh(
                                script: "curl -s -o /dev/null -w '%{http_code}' http://localhost:8180/dwf-cli-docs/",
                                returnStdout: true
                            ).trim()

                            if (response == '200') {
                                echo "✅ 文档站点访问正常 (HTTP ${response})"
                                return
                            }

                            echo "⚠️ HTTP ${response}，重试中..."
                        } catch (Exception e) {
                            echo "尝试 ${attempt + 1}/${maxAttempts}..."
                        }

                        sleep 2
                        attempt++
                    }

                    error "❌ 健康检查失败"
                }
            }
        }
    }

    post {
        success {
            echo '''
                ✅ ========================================
                ✅ 文档部署成功!
                ✅ ========================================

                📊 访问地址:
                   - 文档站点: http://localhost:8180/dwf-cli-docs/

                📁 部署目录: /opt/apache-tomcat/webapps/dwf-cli-docs/
            '''
        }
        failure {
            echo '''
                ❌ ========================================
                ❌ 文档部署失败!
                ❌ ========================================

                请检查:
                1. Python / uv 环境是否正常
                2. mkdocs build 是否有报错
                3. Tomcat 目录权限
                4. Tomcat 是否正在运行
            '''
        }
        cleanup {
            cleanWs()
        }
    }
}
