脚本清理:移除交叉编译,统一板卡原生编译流程 + 数据脚本支持 pCanBridge

- 移除交叉编译脚本 build-arm64.sh / build-arm64-image.sh 及本地
  bin/arm64、build-arm64 产物目录(QEMU 模拟编译过慢)。
  板卡产物统一由 ./scripts/build-board.sh 原生编译产出。
- deploy.sh 简化为 mission + 5 个 systemd 服务安装(不再推送
  二进制),头注明确二进制来源为 build-board.sh。
- fetch-data.sh:新增 pCanBridge_data.db(+wal/shm) 下载,补齐
  遗漏的 pccu_data.db-wal/-shm,--journal 导出列表加入 pCanBridge。
- clean-data.sh:同步清理 pCanBridge 数据库三件套;修复停服命令
  漏掉 pCCU 的老问题(边写边清会产生脏数据),现按
  pCanBridge→apps→moosdb 顺序全停;--start 启动列表补齐。
- .gitignore:新增全局规则 *.db / *.db-shm / *.db-wal /
  *.db-journal / *.log,所有数据库与日志一律不入库;清理散落
  的重复条目与失效的 bin/arm64 条目。

验证:各脚本 bash -n 通过,help 输出正常,git check-ignore 命中
新规则且不影响 .moos 等配置文件。
This commit is contained in:
zjk
2026-08-31 19:42:20 +08:00
parent b547772709
commit e9a85c21fc
6 changed files with 66 additions and 177 deletions
+15 -37
View File
@@ -1,18 +1,20 @@
#!/bin/bash
#=======================================================================
# FILE: scripts/deploy.sh
# DESC: 部署 pPowerManger / pPowerMangerHost / pCCU / pCanBridge(aarch64 二进制 +
# mission)到目标板卡 (RK3588 / Ubuntu 22.04),并用五个独立
# systemd 服务(moosdb / pPowerManger / pPowerMangerHost / pCCU /
# pCanBridge)管理。只安装服务 + daemon-reload,默认不启动、不自启。
# DESC: 部署 mission + 5 个 systemd 服务(moosdb / pPowerManger /
# pPowerMangerHost / pCCU / pCanBridge)到目标板卡 (RK3588 /
# Ubuntu 22.04)。只安装服务 + daemon-reload,默认不启动、不自启。
#
# 注意:二进制由 ./scripts/build-board.sh 在板卡原生编译并部署到
# /root/work/h100/bin/(交叉编译已移除),本脚本不再推送二进制。
#
# 用法:
# ./scripts/deploy.sh setup-ssh 一次性:生成 ed25519 key + ssh-copy-id
# ./scripts/deploy.sh 默认:推送二进制 + mission + 装 4 个
# ./scripts/deploy.sh 默认:推送 mission + 装 5 个
# systemd 服务 + daemon-reload(不启动)
# ./scripts/deploy.sh --start 部署后按依赖顺序启动服务
# ./scripts/deploy.sh status 板卡 4 个服务状态
# ./scripts/deploy.sh stop 停止 4 个服务
# ./scripts/deploy.sh status 板卡各服务状态
# ./scripts/deploy.sh stop 停止各服务
# ./scripts/deploy.sh help 显示帮助
#
# 参数:
@@ -24,7 +26,7 @@
# --ccu-port <n> 覆盖 mission 中 pPowerManger 的 CCU 端口 (ccuport)
#
# 板卡布局:
# /root/work/h100/bin/ aarch64 二进制
# /root/work/h100/bin/ 二进制(由 build-board.sh 板卡编译产出)
# /root/work/h100/missions/ 板卡 mission h100.moos
# /root/work/h100/data/ 数据库存储目录 (power_data.db 等)
# /etc/systemd/system/ moosdb.service / pPowerManger.service /
@@ -51,7 +53,7 @@ warn() { printf '\033[1;33m[deploy]\033[0m %s\n' "$*"; }
err() { printf '\033[1;31m[deploy]\033[0m %s\n' "$*"; }
usage() {
sed -n '2,31p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
sed -n '2,35p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
exit 0
}
@@ -100,22 +102,6 @@ cmd_setup_ssh() {
#-------------------------------------------------------------------
# 前置检查
#-------------------------------------------------------------------
check_local() {
local missing=0
for b in pPowerManger pPowerMangerHost pCCU pCanBridge; do
if [ ! -f "${PROJECT_ROOT}/bin/arm64/${b}" ]; then
err "缺少本地 aarch64 二进制: bin/arm64/${b}(先运行 ./scripts/build-arm64.sh)"; missing=1
elif ! file "${PROJECT_ROOT}/bin/arm64/${b}" | grep -q "aarch64"; then
err "bin/arm64/${b} 不是 aarch64 二进制"; missing=1
fi
done
if [ ! -f "${PROJECT_ROOT}/missions/h100.moos" ]; then
err "缺少板卡 mission: missions/h100.moos"; missing=1
fi
[ "${missing}" -eq 0 ] || return 1
ok "本地产物校验通过 (aarch64 + mission)"
}
check_ssh() {
if ! ${SSH} "${SSH_TARGET}" 'true' 2>/dev/null; then
err "无法免密 SSH 到 ${SSH_TARGET}"
@@ -194,20 +180,13 @@ upsert_moos_param() {
# 命令: deploy
#-------------------------------------------------------------------
cmd_deploy() {
check_local || return 1
check_ssh || return 1
check_ssh || return 1
[ -f "${PROJECT_ROOT}/missions/h100.moos" ] || { err "缺少板卡 mission: missions/h100.moos"; return 1; }
# 1. 推送二进制 + mission
# 1. 创建板卡目录 + 推送 mission
info "创建板卡目录 ${BOARD_DIR}/{bin,missions,data} ..."
${SSH} "${SSH_TARGET}" "mkdir -p ${BOARD_DIR}/bin ${BOARD_DIR}/missions ${BOARD_DIR}/data" || { err "创建目录失败"; return 1; }
info "推送 aarch64 二进制 ..."
${SCP} -q "${PROJECT_ROOT}/bin/arm64/pPowerManger" \
"${PROJECT_ROOT}/bin/arm64/pPowerMangerHost" \
"${PROJECT_ROOT}/bin/arm64/pCCU" \
"${PROJECT_ROOT}/bin/arm64/pCanBridge" \
"${SSH_TARGET}:${BOARD_DIR}/bin/" || { err "推送二进制失败"; return 1; }
info "推送 mission h100.moos ..."
local mission_src="${PROJECT_ROOT}/missions/h100.moos"
local mission_push="${mission_src}" tmp_moos=""
@@ -223,8 +202,7 @@ cmd_deploy() {
"${SSH_TARGET}:${BOARD_DIR}/missions/" || { err "推送 mission 失败"; [ -n "${tmp_moos}" ] && rm -f "${tmp_moos}"; return 1; }
[ -n "${tmp_moos}" ] && rm -f "${tmp_moos}"
${SSH} "${SSH_TARGET}" "chmod +x ${BOARD_DIR}/bin/pPowerManger ${BOARD_DIR}/bin/pPowerMangerHost ${BOARD_DIR}/bin/pCCU ${BOARD_DIR}/bin/pCanBridge"
ok "二进制与 mission 已推送"
ok "mission 已推送(二进制由 build-board.sh 在板卡编译部署)"
# 2. 生成并安装 4 个 systemd unit
local unit