pipeline { agent any tools { maven 'Maven-3.8' jdk 'JDK17' } environment { DEPLOY_PORT = '18082' APP_NAME = 'iot-open-gateway' DEPLOY_DIR = '/data/iot/gateway' JENKINS_NODE_COOKIE = 'dontKillMe' BUILD_ID = 'dontKillMe' } stages { stage('Deploy & Run') { steps { sh ''' echo "=== 启动 IOT 开放网关微服务 ===" mkdir -p "${DEPLOY_DIR}" if [ -f "/data/iot/gateway/source/target/iot-open-gateway-1.0.0.jar" ]; then cp -f "/data/iot/gateway/source/target/iot-open-gateway-1.0.0.jar" "${DEPLOY_DIR}/${APP_NAME}.jar" fi PID=$(lsof -ti:${DEPLOY_PORT} || true) if [ -n "$PID" ]; then echo "停止旧进程 $PID" kill -9 $PID || true sleep 2 fi export JENKINS_NODE_COOKIE=dontKillMe export BUILD_ID=dontKillMe nohup java -jar -Dspring.profiles.active=prod "${DEPLOY_DIR}/${APP_NAME}.jar" > "${DEPLOY_DIR}/${APP_NAME}.log" 2>&1 & echo "后台启动中..." sleep 6 lsof -i:${DEPLOY_PORT} || true echo "=== 网关健康检查 ===" curl -s http://127.0.0.1:${DEPLOY_PORT}/open/gateway/health || true echo "" ''' } } } }