Files
will_server/scripts/deploy/jenkins-docker-push.sh
will 4a53d0bb98 feat(build): 添加JVM标志配置和Java版本检查功能
- 在build.gradle中添加resolveJibJvmFlags方法支持JVM标志配置
- 在jenkins-docker-push.sh中添加JIB_JVM_FLAGS环境变量支持
- 添加JAVA_HOME环境变量配置和路径设置
- 实现Java版本检查确保使用Java 21或更高版本
- 验证Java版本并提供错误提示信息
- 导出JIB_JVM_FLAGS环境变量供构建使用
2026-08-05 20:42:56 +08:00

66 lines
1.8 KiB
Bash

#!/bin/bash
set -euo pipefail
APP_NAME=${APP_NAME:-will-alert-server}
ALIYUN_REGISTRY=${ALIYUN_REGISTRY:-registry.cn-shanghai.aliyuncs.com}
ALIYUN_NAMESPACE=${ALIYUN_NAMESPACE:-willhub}
ALIYUN_IMAGE_NAME=${ALIYUN_IMAGE_NAME:-will-alert-server}
ALIYUN_IMAGE_TAG=${ALIYUN_IMAGE_TAG:-latest}
ALIYUN_USERNAME=${ALIYUN_USERNAME:-}
ALIYUN_PASSWORD=${ALIYUN_PASSWORD:-}
JIB_BASE_IMAGE=${JIB_BASE_IMAGE:-eclipse-temurin:21-jre}
JIB_TARGET_IMAGE=${JIB_TARGET_IMAGE:-${ALIYUN_REGISTRY}/${ALIYUN_NAMESPACE}/${ALIYUN_IMAGE_NAME}:${ALIYUN_IMAGE_TAG}}
JIB_JVM_FLAGS=${JIB_JVM_FLAGS:-}
GRADLE_TASK=${GRADLE_TASK:-:wcsApp:jib}
JAVA_HOME=${JAVA_HOME:-}
if [ "$#" -gt 0 ] && [ "$#" -ne 1 ]; then
echo "Usage: $0 [PROJECT_DIR]"
echo "Example: $0 \$(pwd)"
exit 1
fi
if [ "$#" -eq 1 ]; then
WORKSPACE_DIR=$1
else
WORKSPACE_DIR=${WORKSPACE:-$(pwd)}
fi
cd "${WORKSPACE_DIR}"
if [ -n "${JAVA_HOME}" ]; then
export PATH="${JAVA_HOME}/bin:${PATH}"
fi
JAVA_VERSION=$(java -version 2>&1 | awk -F '[".]' '/version/ {print $2}')
if [ "${JAVA_VERSION}" = "1" ]; then
JAVA_MAJOR=$(java -version 2>&1 | awk -F '[".]' '/version/ {print $3}')
else
JAVA_MAJOR=${JAVA_VERSION}
fi
if [ "${JAVA_MAJOR}" -lt 21 ]; then
echo "Java version is too low: $(java -version 2>&1 | head -n 1), required Java 21"
echo "Please configure Jenkins JDK 21, or set JAVA_HOME=/path/to/jdk-21"
exit 1
fi
if [ -z "${ALIYUN_USERNAME}" ] || [ -z "${ALIYUN_PASSWORD}" ]; then
echo "ALIYUN_USERNAME or ALIYUN_PASSWORD is empty"
exit 1
fi
export ALIYUN_USERNAME
export ALIYUN_PASSWORD
export JIB_BASE_IMAGE
export JIB_TARGET_IMAGE
export JIB_JVM_FLAGS
chmod +x gradlew 2>/dev/null || true
if [ -x ./gradlew ]; then
./gradlew clean "${GRADLE_TASK}" --no-daemon
else
gradle clean "${GRADLE_TASK}" --no-daemon
fi
echo "${APP_NAME} built and pushed by Jib: remote=${JIB_TARGET_IMAGE}"