91 lines
2.1 KiB
Bash
91 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
source "${SCRIPT_DIR}/project_registry.sh"
|
|
|
|
CURRENT_STEP="initializing"
|
|
|
|
on_error() {
|
|
local exit_code=$1 line_no=$2 failed_command=$3
|
|
echo >&2
|
|
echo "发布流程失败,当前步骤: ${CURRENT_STEP}" >&2
|
|
echo "行号: ${line_no},命令: ${failed_command},退出码: ${exit_code}" >&2
|
|
exit "${exit_code}"
|
|
}
|
|
|
|
trap 'on_error $? $LINENO "$BASH_COMMAND"' ERR
|
|
|
|
show_help() {
|
|
cat <<'EOF'
|
|
用法:
|
|
./project_release.sh <ProjectName>
|
|
./project_release.sh --list
|
|
|
|
流程:
|
|
1. buildArmPrj.sh -r <ProjectName>
|
|
2. project_pkg_desktop.sh 或 project_pkg_service.sh <ProjectName>
|
|
3. project_updateversion.sh <ProjectName>
|
|
|
|
支持发布的项目:
|
|
EOF
|
|
list_projects | sed 's/^/ - /'
|
|
}
|
|
|
|
run_step() {
|
|
local title=$1; shift
|
|
CURRENT_STEP="${title}"
|
|
echo
|
|
echo "==> ${title}"
|
|
"$@"
|
|
echo "${title} 成功"
|
|
}
|
|
|
|
if [ $# -eq 1 ] && [ "$1" = "--list" ]; then
|
|
list_projects; exit 0
|
|
fi
|
|
|
|
if [ $# -eq 1 ] && { [ "$1" = "-h" ] || [ "$1" = "--help" ]; }; then
|
|
show_help; exit 0
|
|
fi
|
|
|
|
if [ $# -ne 1 ]; then
|
|
show_help; exit 1
|
|
fi
|
|
|
|
PROJECT_NAME=$1
|
|
|
|
if ! is_project "${PROJECT_NAME}"; then
|
|
echo "不支持的发布目标: ${PROJECT_NAME}" >&2
|
|
echo >&2
|
|
show_help >&2
|
|
exit 1
|
|
fi
|
|
|
|
START_TIME=$(date +%s)
|
|
echo "发布流程开始"
|
|
echo "项目: ${PROJECT_NAME}"
|
|
|
|
run_step "编译 ARM 项目 ${PROJECT_NAME}" \
|
|
bash "${SCRIPT_DIR}/buildArmPrj.sh" -r "${PROJECT_NAME}"
|
|
|
|
PKG_KIND=$(get_project_meta "${PROJECT_NAME}" package_kind)
|
|
if [ "${PKG_KIND}" = "service" ]; then
|
|
run_step "打包服务 ${PROJECT_NAME}" \
|
|
bash "${SCRIPT_DIR}/project_pkg_service.sh" "${PROJECT_NAME}"
|
|
else
|
|
run_step "打包桌面应用 ${PROJECT_NAME}" \
|
|
bash "${SCRIPT_DIR}/project_pkg_desktop.sh" "${PROJECT_NAME}"
|
|
fi
|
|
|
|
run_step "更新 ${PROJECT_NAME} 发布版本信息" \
|
|
bash "${SCRIPT_DIR}/project_updateversion.sh" "${PROJECT_NAME}"
|
|
|
|
CURRENT_STEP="completed"
|
|
END_TIME=$(date +%s)
|
|
ELAPSED=$((END_TIME - START_TIME))
|
|
echo
|
|
echo "发布流程完成,总耗时 $((ELAPSED / 60)) 分 $((ELAPSED % 60)) 秒"
|