feat(build): 添加JVM标志配置和Java版本检查功能

- 在build.gradle中添加resolveJibJvmFlags方法支持JVM标志配置
- 在jenkins-docker-push.sh中添加JIB_JVM_FLAGS环境变量支持
- 添加JAVA_HOME环境变量配置和路径设置
- 实现Java版本检查确保使用Java 21或更高版本
- 验证Java版本并提供错误提示信息
- 导出JIB_JVM_FLAGS环境变量供构建使用
This commit is contained in:
will
2026-08-05 20:42:56 +08:00
parent bdddf3fcbe
commit 4a53d0bb98
2 changed files with 29 additions and 1 deletions
+20 -1
View File
@@ -10,7 +10,9 @@ 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]"
@@ -26,6 +28,22 @@ 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
@@ -35,6 +53,7 @@ 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
@@ -43,4 +62,4 @@ else
gradle clean "${GRADLE_TASK}" --no-daemon
fi
echo "${APP_NAME} built and pushed by Jib: remote=${JIB_TARGET_IMAGE}"
echo "${APP_NAME} built and pushed by Jib: remote=${JIB_TARGET_IMAGE}"
+9
View File
@@ -35,6 +35,15 @@ jib {
mainClass = 'com.will.wcsApp.WcsAppApplication'
ports = ['8080']
environment = [TZ: 'Asia/Shanghai']
jvmFlags = resolveJibJvmFlags()
creationTime = 'USE_CURRENT_TIMESTAMP'
}
}
static List<String> resolveJibJvmFlags() {
String flags = System.getenv('JIB_JVM_FLAGS')
if (flags == null || flags.isBlank()) {
return []
}
return flags.trim().split('\\s+').findAll { it }
}