| 123456789101112131415161718192021222324252627 |
- def call(Map args = [:]) {
- String remoteHost = args.remoteHost ?: env.REMOTE_HOST
- String remotePort = args.remotePort ?: env.REMOTE_PORT
- String remotePath = args.remotePath ?: env.REMOTE_PATH
- String jarName = args.jarName ?: env.JAR_NAME
- String profile = args.profile ?: env.profile
- String jvmArgs = args.jvmArgs ?: env.JVM_ARGS ?: ''
- String backupTime = args.backupTime ?: params.BACKUP_TIME
- // 1. 找到要回滚到的备份包
- String findCmd = """ssh -o StrictHostKeyChecking=no ${remoteHost} \
- "cd ${remotePath} && ls ${jarName}-${backupTime ?: '*'} | tail -1" """
- String backupJar = sh(script: findCmd, returnStdout: true).trim()
- if (!backupJar) error("未找到备份包,回滚终止")
- // 2. 停当前服务
- sh "ssh -o StrictHostKeyChecking=no ${remoteHost} 'lsof -ti:${remotePort} | xargs -r kill -9 || true'"
- // 3. 还原包
- sh "ssh -o StrictHostKeyChecking=no ${remoteHost} 'cd ${remotePath} && cp -f ${backupJar} ${jarName}'"
- // 4. 重启
- sh """ssh -o StrictHostKeyChecking=no ${remoteHost} \
- "sh -c 'cd ${remotePath} && nohup java ${jvmArgs} -jar ${jarName} --spring.profiles.active=${profile} > server.log 2>&1 &'" """
- PrintMes("回滚完成:${backupJar} 已部署到 ${remoteHost}:${remotePort}", 'green')
- }
|