// BuildFlow API CI/CD (.NET 10) // Checkout -> Build Image -> Push Harbor // 部署阶段预留: API 依赖 PG/Mongo/Redis/RabbitMQ, 待中间件就绪后启用 Deploy stage pipeline { agent any environment { HARBOR = "43.134.235.58:58080" IMAGE = "${HARBOR}/buildflow/buildflow-api" TAG = "${env.BUILD_NUMBER}" } options { timeout(time: 30, unit: "MINUTES") buildDiscarder(logRotator(numToKeepStr: "10")) } stages { stage("Checkout") { steps { checkout scm } } stage("Build Image") { steps { sh "docker build -t ${IMAGE}:${TAG} -t ${IMAGE}:latest ." } } stage("Push Harbor") { steps { withCredentials([usernamePassword(credentialsId: "harbor-credentials", usernameVariable: "HUSER", passwordVariable: "HPASS")]) { sh """ echo \$HPASS | docker login ${HARBOR} -u \$HUSER --password-stdin docker push ${IMAGE}:${TAG} docker push ${IMAGE}:latest docker logout ${HARBOR} """ } } } stage("Deploy") { // TODO: 等 PG/Mongo/Redis/RabbitMQ 中间件就绪后启用 // 由 deploy-agent 节点执行: docker pull + docker compose up steps { echo "Deploy stage 暂未启用: API 依赖中间件(PG/Mongo/Redis/RabbitMQ)尚未部署" } } } post { success { echo "BuildFlow API CI/CD SUCCESS: ${IMAGE}:${TAG}" } failure { echo "BuildFlow API CI/CD FAILED" } always { sh "docker rmi ${IMAGE}:${TAG} ${IMAGE}:latest 2>/dev/null || true" deleteDir() } } }