#!/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}"