pipeline {
  agent {
    kubernetes {
      cloud 'tencent'
      inheritFrom 'maven-sonar-scanner'
    }
  }
  stages {
    stage('SCM') {
      steps {
        checkout scm
      }
    }

    stage('PR SonarQube Analysis') {
      steps {
        container('maven-sonar-scanner') {
          withSonarQubeEnv('sonarqube') {
            sh """
              sonar-scanner \\
                -Dsonar.projectKey=FLUTTER_flutter_plugin_sdk_81c6957c-3ee9-4cfc-8df9-fe0a5c8d1427 \\
                -Dsonar.projectName='flutter_plugin_sdk'
            """
          }
        }
      }
    }

    stage('SonarQube Analysis') {
          steps {
            container('maven-sonar-scanner') {
              withSonarQubeEnv('sonarqube') {
                script {
                  // 检查是否为Pull Request
                  if (env.CHANGE_ID) {
                    // PR增量分析 - 只扫描变更的代码
                    echo "Running SonarQube PR Analysis for PR #${env.CHANGE_ID}"
                    sh """
                      sonar-scanner \\
                        -Dsonar.projectKey=FLUTTER_flutter_plugin_sdk_81c6957c-3ee9-4cfc-8df9-fe0a5c8d1427 \\
                        -Dsonar.projectName='flutter_plugin_sdk' \\
                        -Dsonar.pullrequest.key=${env.CHANGE_ID} \\
                        -Dsonar.pullrequest.branch=${env.CHANGE_BRANCH} \\
                        -Dsonar.pullrequest.base=${env.CHANGE_TARGET} \\
                        -Dsonar.qualitygate.wait=true \\
                        -Dsonar.qualitygate.timeout=300
                    """
                  } else {
                    // 分支全量分析
                    echo "Running SonarQube Branch Analysis for branch: ${env.BRANCH_NAME}"
                    sh """
                      sonar-scanner \\
                        -Dsonar.projectKey=FLUTTER_flutter_plugin_sdk_81c6957c-3ee9-4cfc-8df9-fe0a5c8d1427 \\
                        -Dsonar.projectName='flutter_plugin_sdk' \\
                        -Dsonar.branch.name=${env.BRANCH_NAME} \\
                        -Dsonar.qualitygate.wait=true \\
                        -Dsonar.qualitygate.timeout=600
                    """
                  }
                }
              }
            }
          }
        }
      }
    }