#!/bin/bash
set -e
BASE_DIR=$(cd "$(dirname "$0")"; pwd)
PROJECT_DIR="${BASE_DIR}"/..
OUTPUT_DIR="${PROJECT_DIR}/output"
OUTPUT_SDK_DIR="${OUTPUT_DIR}"/spring-adapter/sdk
BUILD_VERSION="v0.0.1"
readonly USAGE="
Usage: bash build.sh [-h] [-v <version>]
Options:
-h Output this help and exit.
-v Specified build version.
Example:
1) Compile a release version and export compilation result to the output directory.
$ bash build/build.sh -v 0.6.3
"
log_info()
{
echo "[BUILD_INFO][$(date +%b\ %d\ %H:%M:%S)][spring-adapter]$*"
}
log_error()
{
echo "[BUILD_ERROR][$(date +%b\ %d\ %H:%M:%S)][spring-adapter]$*"
}
clean() {
if ! bash "${BASE_DIR}"/clean.sh; then
log_error "Failed to exec clean script!"
exit 1
fi
}
build() {
mkdir -p "${OUTPUT_SDK_DIR}"
log_info "Start to build spring-adapter"
cd "${PROJECT_DIR}" || die "${PROJECT_DIR} not exist"
log_info "set spring-adapter version to ${BUILD_VERSION}"
if ! mvn versions:set -DnewVersion="${BUILD_VERSION}"; then
log_error "Failed to set version of spring-adapter!!!"
exit 1
fi
sed -i "s/<runtime-sdk-fg.version>1.0.0<\/runtime-sdk-fg.version>/<runtime-sdk-fg.version>${BUILD_VERSION}<\/runtime-sdk-fg.version>/g" "${PROJECT_DIR}"/pom.xml
sed -i "s/<datasystem.version>1.0.0<\/datasystem.version>/<datasystem.version>${BUILD_VERSION}<\/datasystem.version>/g" "${PROJECT_DIR}"/pom.xml
if ! mvn clean package -DskipTests; then
log_error "Failed to build spring-adapter"
exit 1
fi
log_info "Built spring-adapter successfully"
}
package() {
log_info "Start to package spring-adapter"
jar_modules=( \
microservice-adapter/microservice-adapter-common \
microservice-adapter/microservice-adapter-core \
microservice-adapter/microservice-adapter-springboot2 \
microservice-refresh \
microservice-runtime/microservice-runtime-api \
microservice-runtime/microservice-runtime-yuanrong \
microservice-function/microservice-function-yuanrong \
microservice-sdk/microservice-sdk-functionclient \
microservice-sdk/microservice-sdk-functionclient-starter \
microservice-sdk/microservice-sdk-spring-processor)
for module_path in "${jar_modules[@]}"
do
module_name=$(echo "${module_path}" | awk -F/ '{print $NF}')
cp "${PROJECT_DIR}/${module_path}"/target/"${module_name}"*.jar "${OUTPUT_SDK_DIR}"
done
cp "${PROJECT_DIR}"/pom.xml "${OUTPUT_SDK_DIR}"/microservice-parent.xml
microservice_modules=(microservice-adapter microservice-runtime microservice-function microservice-refresh microservice-sdk)
for pom_module in "${microservice_modules[@]}"
do
cp "${PROJECT_DIR}"/"${pom_module}"/pom.xml "${OUTPUT_SDK_DIR}"/"${pom_module}".xml
done
microservice_adapter_module=(microservice-adapter-common microservice-adapter-core microservice-adapter-springboot2)
for pom_module in "${microservice_adapter_module[@]}"
do
cp "${PROJECT_DIR}"/microservice-adapter/"${pom_module}"/pom.xml "${OUTPUT_SDK_DIR}"/"${pom_module}".xml
done
microservice_runtime_module=(microservice-runtime-api microservice-runtime-yuanrong)
for pom_module in "${microservice_runtime_module[@]}"
do
cp "${PROJECT_DIR}"/microservice-runtime/"${pom_module}"/pom.xml "${OUTPUT_SDK_DIR}"/"${pom_module}".xml
done
microservice_function_module=(microservice-function-yuanrong)
for pom_module in "${microservice_function_module[@]}"
do
cp "${PROJECT_DIR}"/microservice-function/"${pom_module}"/pom.xml "${OUTPUT_SDK_DIR}"/"${pom_module}".xml
done
microservice_sdk_module=(microservice-sdk-functionclient microservice-sdk-functionclient-starter microservice-sdk-spring-processor)
for pom_module in "${microservice_sdk_module[@]}"
do
cp "${PROJECT_DIR}"/microservice-sdk/"${pom_module}"/pom.xml "${OUTPUT_SDK_DIR}"/"${pom_module}".xml
done
cp "${PROJECT_DIR}"/build/install-adapter.sh "${OUTPUT_SDK_DIR}"
echo "${BUILD_VERSION}" > "${OUTPUT_SDK_DIR}"/VERSION
cd "${OUTPUT_DIR}"
tar -zcvf spring-adapter-"${BUILD_VERSION}".tar.gz spring-adapter/
log_info "Package spring-adapter successfully"
}
while getopts "hv:" opt; do
case "${opt}" in
h)
echo -e "${USAGE}"
exit 0
;;
v)
BUILD_VERSION="${OPTARG}"
log_info "BUILD_VERSION: ${OPTARG}"
;;
*)
log_error "invalid options: $opt"
exit 1
;;
esac
done
clean
build
package