pipeline {
  agent {
    label 'tdk-deployer'
  }
  options {
    skipStagesAfterUnstable()
    timeout(time: 1, unit: 'HOURS') 
    buildDiscarder(logRotator(daysToKeepStr: '15', numToKeepStr: '10', artifactDaysToKeepStr: '15', artifactNumToKeepStr: '10'))
  }
  stages {
    stage('部署') {
      environment {
        DEPLOY_SERVER     = "ui-test-txm" // 部署服务器
        REMOTE_DIRECTORY  = "ai-agent-txm" // 部署目录，基础目录是/data
      }
      steps {
        withCredentials([usernamePassword(
            credentialsId: 'docker-registry', usernameVariable: 'DOCKER_REGISTRY_USERNAME', passwordVariable: 'DOCKER_REGISTRY_PASSWORD')]) {
          sshPublisher(
            continueOnError: false, 
            failOnError: true,
            publishers: [
              sshPublisherDesc(
                configName: "$DEPLOY_SERVER",
                verbose: true,
                transfers: [
                  sshTransfer(
                    sourceFiles: "web.env, data-agent.env, code-interpreter.env, docker-compose.yml",
                    remoteDirectory: "$REMOTE_DIRECTORY",
                    execCommand: "cd /data/$REMOTE_DIRECTORY \
                      && docker compose down \
                      && docker login --username=$DOCKER_REGISTRY_USERNAME --password '${DOCKER_REGISTRY_PASSWORD}' $DOCKER_REGISTRY \
                      && docker compose pull \
                      && docker logout $DOCKER_REGISTRY \
                      && docker compose up -d \
                      && docker compose exec web php artisan storage:link \
                      && docker compose exec web php artisan  db:seed"
                  )
                ]
              )
            ] // end publishers
          ) // end sshPublisher
        } // end withCredentials body
      }
    }

  } //end stages
}