mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-04 10:13:53 +08:00
145 lines
4.1 KiB
Bash
Executable File
145 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
cd "$(dirname "$0")/../"
|
|
LOCAL_PATH=$(pwd)
|
|
|
|
source ./scripts/echo.sh
|
|
source ./scripts/common.sh
|
|
OUTPUT_DIR=$(mkdir_output "$1")
|
|
APP="apipark"
|
|
OUTPUT_BIN="${OUTPUT_DIR}/${APP}"
|
|
AI_EVENT_LISTEN_APP="apipark_ai_event_listen"
|
|
AI_EVENT_LISTEN_BIN="${OUTPUT_DIR}/${AI_EVENT_LISTEN_APP}"
|
|
VERSION=$(gen_version "$2")
|
|
BUILD_TYPE=$3
|
|
ARCH=$4
|
|
if [[ $ARCH == "" ]];then
|
|
ARCH="amd64"
|
|
fi
|
|
echo ${VERSION}
|
|
set -e
|
|
version() { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
|
|
|
|
env_check() {
|
|
# 环境检查
|
|
echo_info "Checking environment..."
|
|
|
|
# 检查是否安装了 go
|
|
if ! command -v go &> /dev/null; then
|
|
echo_error "Go is not installed. Please install Go."
|
|
return 1
|
|
fi
|
|
echo "Go is installed."
|
|
|
|
# 获取Go的版本号
|
|
go_version=$(go version | { read _ _ v _; echo ${v#go}; })
|
|
|
|
# 检查Go版本是否大于1.21
|
|
if [ "$(version "${go_version}")" -lt "$(version 1.20)" ]; then
|
|
echo_error "Go version is less than 1.21. Please install Go version 1.21 or higher."
|
|
exit 1
|
|
fi
|
|
echo "Go version is greater than 1.21."
|
|
|
|
# 检查是否安装了 node
|
|
if ! command -v node &> /dev/null; then
|
|
echo_error "Node.js is not installed. Please install Node.js."
|
|
exit 1
|
|
fi
|
|
echo "Node.js is installed."
|
|
|
|
# 检查是否安装了npm
|
|
if ! command -v npm &> /dev/null; then
|
|
echo_error "Npm is not installed. Please install Npm."
|
|
exit 1
|
|
fi
|
|
echo "Npm is installed."
|
|
|
|
# # 检查是否安装了 pnpm
|
|
# if ! command -v pnpm &> /dev/null; then
|
|
# echo_error "Pnpm is not installed. Please install Pnpm."
|
|
# exit 1
|
|
# fi
|
|
# echo "Pnpm is installed."
|
|
|
|
# 如果所有检查都通过,打印环境检查通过的消息
|
|
echo_info "All required tools are installed."
|
|
}
|
|
|
|
# 打包前端,使用方式:build_frontend [build_type]
|
|
build_frontend() {
|
|
# 打包前端
|
|
if [[ "$1" == "all" || ! -d "./frontend/dist" ]]; then
|
|
echo_info "Install dependencies..."
|
|
pnpm install --registry https://registry.npmmirror.com --dir ./frontend
|
|
echo_info "Build frontend..."
|
|
cd ./frontend && pnpm run build --verbose
|
|
cd ..
|
|
else
|
|
echo_info "Need not build frontend."
|
|
fi
|
|
return
|
|
}
|
|
|
|
build_backend() {
|
|
# 打包后端
|
|
echo_info "Build backend..."
|
|
flags="-X 'github.com/APIParkLab/APIPark/common/version.Version=${VERSION}'
|
|
-X 'github.com/APIParkLab/APIPark/common/version.goversion=$(go version)'
|
|
-X 'github.com/APIParkLab/APIPark/common/version.gitcommit=$(git rev-parse HEAD)'
|
|
-X 'github.com/APIParkLab/APIPark/common/version.BuildTime=$(date -u +"%Y-%m-%dT%H:%M:%SZ")'
|
|
-X 'github.com/APIParkLab/APIPark/common/version.builduser=$(id -u -n)'"
|
|
|
|
Tags=""
|
|
if [ -n "$1" ]; then
|
|
Tags="--tags $1"
|
|
fi
|
|
|
|
echo "go mod tidy"
|
|
go mod tidy
|
|
|
|
if [ ! -d "${OUTPUT_DIR}" ];then
|
|
mkdir -p "${OUTPUT_DIR}"
|
|
fi
|
|
pwd
|
|
|
|
# -ldflags="-w -s" means omit DWARF symbol table and the symbol table and debug information
|
|
echo "GOOS=linux GOARCH=$ARCH CGO_ENABLED=0 go build $Tags -ldflags \"-w -s $flags\" -o \"${OUTPUT_BIN}\""
|
|
GOOS=linux GOARCH=$ARCH CGO_ENABLED=0 go build ${Tags} -ldflags "-w -s $flags" -o ${OUTPUT_BIN}
|
|
|
|
echo "Build backend successfully..."
|
|
echo "GOOS=linux GOARCH=$ARCH CGO_ENABLED=0 go build -ldflags \"-w -s\" -o \"${AI_EVENT_LISTEN_BIN}\" ./app/ai-event-handler"
|
|
GOOS=linux GOARCH=$ARCH CGO_ENABLED=0 go build -ldflags "-w -s" -o "${AI_EVENT_LISTEN_BIN}" ./app/ai-event-handler
|
|
return
|
|
}
|
|
|
|
package() {
|
|
# 打包
|
|
echo_info "Package..."
|
|
PACKAGE_DIR="${OUTPUT_DIR}/${APP}_${VERSION}"
|
|
RESOURCE_DIR=./scripts/resource
|
|
|
|
echo "mkdir -p ${PACKAGE_DIR}"
|
|
mkdir -p "${PACKAGE_DIR}"
|
|
|
|
echo "cp -a ${RESOURCE_DIR}/* ${PACKAGE_DIR}"
|
|
cp -a ${RESOURCE_DIR}/* "${PACKAGE_DIR}"
|
|
|
|
echo "cp ${OUTPUT_BIN} ${PACKAGE_DIR}"
|
|
|
|
cp "${OUTPUT_BIN}" "${PACKAGE_DIR}"
|
|
|
|
echo "cp ${AI_EVENT_LISTEN_BIN} ${PACKAGE_DIR}"
|
|
cp "${AI_EVENT_LISTEN_BIN}" "${PACKAGE_DIR}"
|
|
|
|
echo "tar -czvf ${PACKAGE_DIR}_linux_${ARCH}.tar.gz -C ${PACKAGE_DIR}/ ./"
|
|
tar -czvf "${PACKAGE_DIR}_linux_${ARCH}.tar.gz" -C "${PACKAGE_DIR}/" "./"
|
|
# rm -fr "${PACKAGE_DIR}"
|
|
echo_info "Package successfully..."
|
|
}
|
|
|
|
|
|
env_check
|
|
build_frontend "${BUILD_TYPE}"
|
|
build_backend ""
|
|
package "$1" |