pipeline {
  agent any
  options { skipDefaultCheckout(false) }
  environment {
    IMG = "127.0.0.1/middleware/buildflow-api"
  }
  stages {
    stage("Build image") {
      steps {
        sh "docker build -t ${IMG}:latest -t ${IMG}:${BUILD_NUMBER} ."
      }
    }
    stage("Push to Harbor") {
      steps {
        withCredentials([usernamePassword(credentialsId: "harbor-admin", usernameVariable: "HU", passwordVariable: "HP")]) {
          sh 'echo "$HP" | docker login 127.0.0.1 -u "$HU" --password-stdin'
          sh "docker push ${IMG}:latest && docker push ${IMG}:${BUILD_NUMBER}"
        }
      }
    }
    stage("Deploy") {
      steps {
        sh "docker compose -f /home/xiangning/deploy/buildflow/docker-compose.yml pull buildflow-api"
        sh "docker compose -f /home/xiangning/deploy/buildflow/docker-compose.yml up -d --no-deps buildflow-api"
      }
    }
  }
  post {
    always { sh "docker image prune -f || true" }
  }
}
