ci: 网关流水线改为拉代码+构建+部署,数据库连接默认值写入配置
- 新增 Jenkinsfile 阶段:拉取 main → mvn package → 本机重启,不再依赖服务器上手工打好的旧 jar - 敏感密钥(GATEWAY_*_SECRET)放服务器 /data/iot/gateway/gateway.env,启动前 source,不进仓库 - application*.yml 写入 PostgreSQL 账号默认值(内网测试环境),后端地址默认指向同机 127.0.0.1:8080 - 部署后健康检查失败时让流水线报错,而不是静默通过 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Vendored
+37
-9
@@ -1,3 +1,10 @@
|
||||
// IOT 开放网关流水线:拉代码 → 构建 → 部署重启。
|
||||
// 由 Jenkins 的 iot-open-gateway 任务以「Pipeline script from SCM」读取本文件。
|
||||
//
|
||||
// 运行方式:网关 jar 与 Jenkins 在同一台服务器(192.168.114.100)上,直接在本机重启,不走 SSH。
|
||||
// 敏感配置(GATEWAY_JWT_SECRET / GATEWAY_INTERNAL_SECRET / GATEWAY_ADMIN_SECRET 等)放在服务器上的
|
||||
// /data/iot/gateway/gateway.env(权限 600),启动前 source 进来,不进仓库。
|
||||
// 数据库账号密码、后端地址已作为默认值写在 application*.yml 里(内网测试环境)。
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
@@ -10,19 +17,37 @@ pipeline {
|
||||
DEPLOY_PORT = '18082'
|
||||
APP_NAME = 'iot-open-gateway'
|
||||
DEPLOY_DIR = '/data/iot/gateway'
|
||||
// 防止 Jenkins 在任务结束时自动杀掉后台 nohup 进程
|
||||
JENKINS_NODE_COOKIE = 'dontKillMe'
|
||||
BUILD_ID = 'dontKillMe'
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Deploy & Run') {
|
||||
stage('拉代码') {
|
||||
steps {
|
||||
git branch: 'main', url: 'https://git.tengwangyun.com/wjh/IoT-OpenApi.git'
|
||||
}
|
||||
}
|
||||
|
||||
stage('构建') {
|
||||
steps {
|
||||
// 网关没有单测,跳过测试加快构建
|
||||
sh 'mvn -B clean package -DskipTests'
|
||||
}
|
||||
}
|
||||
|
||||
stage('部署') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "=== 启动 IOT 开放网关微服务 ==="
|
||||
set -e
|
||||
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"
|
||||
JAR=$(ls target/iot-open-gateway-*.jar | head -1)
|
||||
cp -f "$JAR" "${DEPLOY_DIR}/${APP_NAME}.jar"
|
||||
|
||||
if [ ! -f "${DEPLOY_DIR}/gateway.env" ]; then
|
||||
echo "缺少 ${DEPLOY_DIR}/gateway.env(存放 GATEWAY_*_SECRET 等),中止" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PID=$(lsof -ti:${DEPLOY_PORT} || true)
|
||||
@@ -34,13 +59,16 @@ pipeline {
|
||||
|
||||
export JENKINS_NODE_COOKIE=dontKillMe
|
||||
export BUILD_ID=dontKillMe
|
||||
set -a
|
||||
. "${DEPLOY_DIR}/gateway.env"
|
||||
set +a
|
||||
nohup java -jar -Dspring.profiles.active=prod "${DEPLOY_DIR}/${APP_NAME}.jar" > "${DEPLOY_DIR}/${APP_NAME}.log" 2>&1 &
|
||||
|
||||
echo "后台启动中..."
|
||||
sleep 6
|
||||
|
||||
echo "后台启动中,等待 12 秒检测..."
|
||||
sleep 12
|
||||
lsof -i:${DEPLOY_PORT} || true
|
||||
echo "=== 网关健康检查 ==="
|
||||
curl -s http://127.0.0.1:${DEPLOY_PORT}/open/gateway/health || true
|
||||
curl -sf http://127.0.0.1:${DEPLOY_PORT}/open/gateway/health
|
||||
echo ""
|
||||
'''
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user