脚本清理:移除交叉编译,统一板卡原生编译流程 + 数据脚本支持 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:
+14
-18
@@ -241,18 +241,17 @@ CTestTestfile.cmake
|
|||||||
_deps
|
_deps
|
||||||
|
|
||||||
|
|
||||||
# PowerManager specific log files
|
# PowerManager specific files
|
||||||
bin/pPowerManger.log
|
|
||||||
bin/ccuState.txt
|
bin/ccuState.txt
|
||||||
*.db
|
|
||||||
# pPowerMangerHost 反馈落盘数据库
|
|
||||||
feedback_data.db
|
|
||||||
|
|
||||||
# PowerManager compiled binaries (built into bin/ by CMake)
|
# PowerManager compiled binaries (built into bin/ by CMake)
|
||||||
bin/pPowerManger
|
bin/pPowerManger
|
||||||
bin/SQLiteTest
|
bin/SQLiteTest
|
||||||
bin/pPMtest
|
bin/pPMtest
|
||||||
bin/pPowerMangerHost
|
bin/pPowerMangerHost
|
||||||
|
bin/pCCU
|
||||||
|
bin/pccuTest
|
||||||
|
bin/pCanBridge
|
||||||
|
|
||||||
# CI test reports
|
# CI test reports
|
||||||
reports/
|
reports/
|
||||||
@@ -262,29 +261,26 @@ bin/PowerMangerTests
|
|||||||
bin/udpFeeder
|
bin/udpFeeder
|
||||||
bin/fullFeeder
|
bin/fullFeeder
|
||||||
|
|
||||||
# SQLite runtime artifacts
|
# ============================================================
|
||||||
|
# 数据库与日志文件(全局忽略,一律不入库)
|
||||||
|
# *.db / *.db-* SQLite 数据库及 WAL/SHM/journal 伴生文件
|
||||||
|
# (power_data / pccu_data / pCanBridge_data /
|
||||||
|
# feedback_data / 测试库等)
|
||||||
|
# *.log 运行日志(pCCU.log / pPowerManger.log 等)
|
||||||
|
# ============================================================
|
||||||
|
*.db
|
||||||
*.db-shm
|
*.db-shm
|
||||||
*.db-wal
|
*.db-wal
|
||||||
*.db-journal
|
*.db-journal
|
||||||
|
*.log
|
||||||
|
|
||||||
# Cross-compiled aarch64 artifacts (scripts/cross-build-local.sh)
|
# Board-native build dirs (build-board.sh) / 历史本机构建目录
|
||||||
bin/arm64/
|
|
||||||
|
|
||||||
# Board-native build dirs (build-arm64.sh / direct on-board builds)
|
|
||||||
build-arm64/
|
build-arm64/
|
||||||
build-nosa-test/
|
build-nosa-test/
|
||||||
|
|
||||||
# CMake-generated web asset table (pPowerMangerHost)
|
# CMake-generated web asset table (pPowerMangerHost)
|
||||||
src/pPowerMangerHost/webassets_gen.h
|
src/pPowerMangerHost/webassets_gen.h
|
||||||
|
|
||||||
# ============================================================
|
|
||||||
# 本机编译产物(避免误提交二进制)
|
|
||||||
# ============================================================
|
|
||||||
bin/pCCU
|
|
||||||
bin/pccuTest
|
|
||||||
bin/pCanBridge
|
|
||||||
pCanBridge_data.db
|
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# MS Office 临时锁文件 / 编辑器、备份残留
|
# MS Office 临时锁文件 / 编辑器、备份残留
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#=======================================================================
|
|
||||||
# FILE: scripts/build-arm64-image.sh
|
|
||||||
# DESC: 一次性构建 arm64 CI 镜像(MOOS-IvP + jsoncpp + GTest)。
|
|
||||||
# 构建产物缓存后,日常交叉编译只需 ./scripts/build-arm64.sh。
|
|
||||||
#
|
|
||||||
# 用法:
|
|
||||||
# CI_TOKEN=xxx ./scripts/build-arm64-image.sh # 构建(已存在则跳过)
|
|
||||||
# CI_TOKEN=xxx ./scripts/build-arm64-image.sh --force # 强制重新构建
|
|
||||||
#
|
|
||||||
# 环境变量:
|
|
||||||
# CI_TOKEN 内网 Gitea token(拉取 moos-ivp / googletest 镜像,兼容 GITEA_TOKEN)
|
|
||||||
#=======================================================================
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
||||||
|
|
||||||
IMAGE="h100-power-manager-ci:arm64"
|
|
||||||
GITEA_TOKEN="${CI_TOKEN:-${GITEA_TOKEN:-}}"
|
|
||||||
FORCE=0
|
|
||||||
[ "${1:-}" = "--force" ] && FORCE=1
|
|
||||||
|
|
||||||
if [ -z "${GITEA_TOKEN}" ]; then
|
|
||||||
echo "错误: 缺少内网 Gitea token。" >&2
|
|
||||||
echo " 请设置: CI_TOKEN=xxx ./scripts/build-arm64-image.sh" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v docker >/dev/null 2>&1; then
|
|
||||||
echo "错误: 未找到 docker" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! docker info >/dev/null 2>&1; then
|
|
||||||
echo "错误: 无法连接 docker daemon(是否需要用 sudo?)" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! docker buildx version >/dev/null 2>&1; then
|
|
||||||
echo "错误: 未找到 buildx。请安装: sudo apt-get install -y docker-buildx" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${FORCE}" = "0" ] && docker image inspect "${IMAGE}" >/dev/null 2>&1; then
|
|
||||||
echo ">>> 已存在镜像 ${IMAGE},跳过构建(如需重建: ${0} --force)"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if [ "${FORCE}" = "1" ]; then
|
|
||||||
echo ">>> --force: 重新构建镜像 ${IMAGE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CI_TOKEN="${GITEA_TOKEN}" docker buildx build \
|
|
||||||
--platform linux/arm64 \
|
|
||||||
--load \
|
|
||||||
--secret id=gitea_token,env=CI_TOKEN \
|
|
||||||
-t "${IMAGE}" -f "${PROJECT_ROOT}/ci/Dockerfile" "${PROJECT_ROOT}"
|
|
||||||
|
|
||||||
echo ">>> 镜像构建完成: ${IMAGE}"
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#=======================================================================
|
|
||||||
# FILE: scripts/build-arm64.sh
|
|
||||||
# DESC: 交叉编译为 RK3588 (aarch64) / Ubuntu 22.04 二进制,用法同 build.sh。
|
|
||||||
# 在 arm64 镜像(h100-power-manager-ci:arm64)内跑 cmake + make,
|
|
||||||
# 产物输出到 bin/arm64/,与本地 x86_64 的 bin/、build/ 互不影响。
|
|
||||||
#
|
|
||||||
# 用法:
|
|
||||||
# ./scripts/build-arm64.sh
|
|
||||||
#
|
|
||||||
# 前置(一次性,构建 arm64 镜像):
|
|
||||||
# CI_TOKEN=xxx ./scripts/build-arm64-image.sh
|
|
||||||
#=======================================================================
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
||||||
|
|
||||||
IMAGE="h100-power-manager-ci:arm64"
|
|
||||||
JOBS="${JOBS:-$(nproc)}"
|
|
||||||
|
|
||||||
if ! docker image inspect "${IMAGE}" >/dev/null 2>&1; then
|
|
||||||
echo "错误: 本地不存在镜像 ${IMAGE}" >&2
|
|
||||||
echo " 请先执行: CI_TOKEN=xxx ./scripts/build-arm64-image.sh" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "${PROJECT_ROOT}/build-arm64" "${PROJECT_ROOT}/bin/arm64"
|
|
||||||
|
|
||||||
docker run --rm --platform linux/arm64 \
|
|
||||||
-u "$(id -u):$(id -g)" \
|
|
||||||
-v "${PROJECT_ROOT}":/src \
|
|
||||||
-w /src/build-arm64 \
|
|
||||||
"${IMAGE}" \
|
|
||||||
/bin/sh -c "cmake -DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DEXECUTABLE_OUTPUT_PATH=/src/bin/arm64 \
|
|
||||||
-DRUNTIME_OUTPUT_DIRECTORY=/src/bin/arm64 .. && make -j${JOBS}"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo ">>> 完成。产物:"
|
|
||||||
file "${PROJECT_ROOT}/bin/arm64/pPowerManger"
|
|
||||||
+21
-12
@@ -3,14 +3,16 @@
|
|||||||
# FILE: scripts/clean-data.sh
|
# FILE: scripts/clean-data.sh
|
||||||
# DESC: 清理目标板卡 (RK3588 / Ubuntu 22.04) 上的数据库与日志文件。
|
# DESC: 清理目标板卡 (RK3588 / Ubuntu 22.04) 上的数据库与日志文件。
|
||||||
# 默认清理板卡运行目录 /root/work/h100/data/ 下的:
|
# 默认清理板卡运行目录 /root/work/h100/data/ 下的:
|
||||||
# power_data.db (+ -wal/-shm) 主机功率数据库
|
# power_data.db (+ -wal/-shm) 主机功率数据库
|
||||||
# feedback_data.db 反馈落盘数据库
|
# feedback_data.db 反馈落盘数据库
|
||||||
# pPowerManger.log 主机运行日志
|
# pccu_data.db (+ -wal/-shm) pCCU 帧日志数据库
|
||||||
# 默认先停止 4 个服务再清理(避免 SQLite WAL 仍在写入)。
|
# pCanBridge_data.db (+ -wal/-shm) pCanBridge CAN 帧数据库
|
||||||
|
# pPowerManger.log / pCCU.log 运行日志
|
||||||
|
# 默认先停止各服务再清理(避免 SQLite WAL 仍在写入)。
|
||||||
#
|
#
|
||||||
# 用法:
|
# 用法:
|
||||||
# ./scripts/clean-data.sh # 停服务 -> 清理 data 目录(不重启)
|
# ./scripts/clean-data.sh # 停服务 -> 清理 data 目录(不重启)
|
||||||
# ./scripts/clean-data.sh --start # 清理后重新启动 4 个服务
|
# ./scripts/clean-data.sh --start # 清理后重新启动各服务
|
||||||
# ./scripts/clean-data.sh --no-stop # 不停服务直接清理(慎用)
|
# ./scripts/clean-data.sh --no-stop # 不停服务直接清理(慎用)
|
||||||
# ./scripts/clean-data.sh --stale # 额外清理 bin/ 与 src/bin/ 下的旧 db/log
|
# ./scripts/clean-data.sh --stale # 额外清理 bin/ 与 src/bin/ 下的旧 db/log
|
||||||
#
|
#
|
||||||
@@ -38,10 +40,16 @@ DO_START=0
|
|||||||
DO_STOP=1
|
DO_STOP=1
|
||||||
DO_STALE=0
|
DO_STALE=0
|
||||||
|
|
||||||
SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU)
|
SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU pCanBridge)
|
||||||
|
|
||||||
# 板卡 data 目录下需要清理的文件(含 SQLite WAL/SHM)
|
# 板卡 data 目录下需要清理的文件(含 SQLite WAL/SHM)
|
||||||
DATA_FILES=(power_data.db power_data.db-wal power_data.db-shm feedback_data.db pPowerManger.log pccu_data.db pCCU.log)
|
DATA_FILES=(
|
||||||
|
power_data.db power_data.db-wal power_data.db-shm
|
||||||
|
feedback_data.db
|
||||||
|
pccu_data.db pccu_data.db-wal pccu_data.db-shm
|
||||||
|
pCanBridge_data.db pCanBridge_data.db-wal pCanBridge_data.db-shm
|
||||||
|
pPowerManger.log pCCU.log
|
||||||
|
)
|
||||||
|
|
||||||
# 历史遗留目录(旧部署位置),仅当 --stale 时清理
|
# 历史遗留目录(旧部署位置),仅当 --stale 时清理
|
||||||
STALE_DIRS=("${BOARD_DIR}/bin" "${BOARD_DIR}/src/bin")
|
STALE_DIRS=("${BOARD_DIR}/bin" "${BOARD_DIR}/src/bin")
|
||||||
@@ -52,7 +60,7 @@ warn() { printf '\033[1;33m[clean-data]\033[0m %s\n' "$*"; }
|
|||||||
err() { printf '\033[1;31m[clean-data]\033[0m %s\n' "$*"; }
|
err() { printf '\033[1;31m[clean-data]\033[0m %s\n' "$*"; }
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
sed -n '2,29p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
|
sed -n '2,31p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +100,8 @@ ok "SSH 连接正常: ${SSH_TARGET}"
|
|||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
if [ "${DO_STOP}" = "1" ]; then
|
if [ "${DO_STOP}" = "1" ]; then
|
||||||
info "停止服务 ${SERVICES[*]} ..."
|
info "停止服务 ${SERVICES[*]} ..."
|
||||||
${SSH} "${SSH_TARGET}" "systemctl stop pPowerMangerHost pPowerManger moosdb 2>/dev/null; true"
|
# 先停应用,最后停 moosdb
|
||||||
|
${SSH} "${SSH_TARGET}" "systemctl stop pCanBridge pPowerMangerHost pPowerManger pCCU moosdb 2>/dev/null; true"
|
||||||
ok "服务已停止"
|
ok "服务已停止"
|
||||||
else
|
else
|
||||||
warn "--no-stop:不停服务直接清理,可能产生脏数据(SQLite 仍在写入)"
|
warn "--no-stop:不停服务直接清理,可能产生脏数据(SQLite 仍在写入)"
|
||||||
@@ -123,15 +132,15 @@ fi
|
|||||||
# 5. 可选: 重启服务
|
# 5. 可选: 重启服务
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
if [ "${DO_START}" = "1" ]; then
|
if [ "${DO_START}" = "1" ]; then
|
||||||
info "启动服务 (moosdb -> pPowerManger / pPowerMangerHost / pCCU) ..."
|
info "启动服务 (moosdb -> pPowerManger / pPowerMangerHost / pCCU / pCanBridge) ..."
|
||||||
${SSH} "${SSH_TARGET}" "systemctl start moosdb && sleep 1 && \
|
${SSH} "${SSH_TARGET}" "systemctl start moosdb && sleep 1 && \
|
||||||
systemctl start pPowerManger pPowerMangerHost pCCU" \
|
systemctl start pPowerManger pPowerMangerHost pCCU pCanBridge" \
|
||||||
|| { err "启动失败"; exit 1; }
|
|| { err "启动失败"; exit 1; }
|
||||||
ok "服务已启动"
|
ok "服务已启动"
|
||||||
else
|
else
|
||||||
echo ""
|
echo ""
|
||||||
info "清理完成,服务未启动。需要重启请加 --start 或手动:"
|
info "清理完成,服务未启动。需要重启请加 --start 或手动:"
|
||||||
echo " systemctl start moosdb pPowerManger pPowerMangerHost pCCU"
|
echo " systemctl start moosdb pPowerManger pPowerMangerHost pCCU pCanBridge"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
+15
-37
@@ -1,18 +1,20 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#=======================================================================
|
#=======================================================================
|
||||||
# FILE: scripts/deploy.sh
|
# FILE: scripts/deploy.sh
|
||||||
# DESC: 部署 pPowerManger / pPowerMangerHost / pCCU / pCanBridge(aarch64 二进制 +
|
# DESC: 部署 mission + 5 个 systemd 服务(moosdb / pPowerManger /
|
||||||
# mission)到目标板卡 (RK3588 / Ubuntu 22.04),并用五个独立
|
# pPowerMangerHost / pCCU / pCanBridge)到目标板卡 (RK3588 /
|
||||||
# systemd 服务(moosdb / pPowerManger / pPowerMangerHost / pCCU /
|
# Ubuntu 22.04)。只安装服务 + daemon-reload,默认不启动、不自启。
|
||||||
# pCanBridge)管理。只安装服务 + daemon-reload,默认不启动、不自启。
|
#
|
||||||
|
# 注意:二进制由 ./scripts/build-board.sh 在板卡原生编译并部署到
|
||||||
|
# /root/work/h100/bin/(交叉编译已移除),本脚本不再推送二进制。
|
||||||
#
|
#
|
||||||
# 用法:
|
# 用法:
|
||||||
# ./scripts/deploy.sh setup-ssh 一次性:生成 ed25519 key + ssh-copy-id
|
# ./scripts/deploy.sh setup-ssh 一次性:生成 ed25519 key + ssh-copy-id
|
||||||
# ./scripts/deploy.sh 默认:推送二进制 + mission + 装 4 个
|
# ./scripts/deploy.sh 默认:推送 mission + 装 5 个
|
||||||
# systemd 服务 + daemon-reload(不启动)
|
# systemd 服务 + daemon-reload(不启动)
|
||||||
# ./scripts/deploy.sh --start 部署后按依赖顺序启动服务
|
# ./scripts/deploy.sh --start 部署后按依赖顺序启动服务
|
||||||
# ./scripts/deploy.sh status 板卡 4 个服务状态
|
# ./scripts/deploy.sh status 板卡各服务状态
|
||||||
# ./scripts/deploy.sh stop 停止 4 个服务
|
# ./scripts/deploy.sh stop 停止各服务
|
||||||
# ./scripts/deploy.sh help 显示帮助
|
# ./scripts/deploy.sh help 显示帮助
|
||||||
#
|
#
|
||||||
# 参数:
|
# 参数:
|
||||||
@@ -24,7 +26,7 @@
|
|||||||
# --ccu-port <n> 覆盖 mission 中 pPowerManger 的 CCU 端口 (ccuport)
|
# --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/missions/ 板卡 mission h100.moos
|
||||||
# /root/work/h100/data/ 数据库存储目录 (power_data.db 等)
|
# /root/work/h100/data/ 数据库存储目录 (power_data.db 等)
|
||||||
# /etc/systemd/system/ moosdb.service / pPowerManger.service /
|
# /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' "$*"; }
|
err() { printf '\033[1;31m[deploy]\033[0m %s\n' "$*"; }
|
||||||
|
|
||||||
usage() {
|
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
|
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() {
|
check_ssh() {
|
||||||
if ! ${SSH} "${SSH_TARGET}" 'true' 2>/dev/null; then
|
if ! ${SSH} "${SSH_TARGET}" 'true' 2>/dev/null; then
|
||||||
err "无法免密 SSH 到 ${SSH_TARGET}"
|
err "无法免密 SSH 到 ${SSH_TARGET}"
|
||||||
@@ -194,20 +180,13 @@ upsert_moos_param() {
|
|||||||
# 命令: deploy
|
# 命令: deploy
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
cmd_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} ..."
|
info "创建板卡目录 ${BOARD_DIR}/{bin,missions,data} ..."
|
||||||
${SSH} "${SSH_TARGET}" "mkdir -p ${BOARD_DIR}/bin ${BOARD_DIR}/missions ${BOARD_DIR}/data" || { err "创建目录失败"; return 1; }
|
${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 ..."
|
info "推送 mission h100.moos ..."
|
||||||
local mission_src="${PROJECT_ROOT}/missions/h100.moos"
|
local mission_src="${PROJECT_ROOT}/missions/h100.moos"
|
||||||
local mission_push="${mission_src}" tmp_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; }
|
"${SSH_TARGET}:${BOARD_DIR}/missions/" || { err "推送 mission 失败"; [ -n "${tmp_moos}" ] && rm -f "${tmp_moos}"; return 1; }
|
||||||
[ -n "${tmp_moos}" ] && rm -f "${tmp_moos}"
|
[ -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 已推送(二进制由 build-board.sh 在板卡编译部署)"
|
||||||
ok "二进制与 mission 已推送"
|
|
||||||
|
|
||||||
# 2. 生成并安装 4 个 systemd unit
|
# 2. 生成并安装 4 个 systemd unit
|
||||||
local unit
|
local unit
|
||||||
|
|||||||
+16
-8
@@ -3,10 +3,12 @@
|
|||||||
# FILE: scripts/fetch-data.sh
|
# FILE: scripts/fetch-data.sh
|
||||||
# DESC: 从目标板卡 (RK3588 / Ubuntu 22.04) 下载数据库与日志到本地。
|
# DESC: 从目标板卡 (RK3588 / Ubuntu 22.04) 下载数据库与日志到本地。
|
||||||
# 默认抓取板卡运行目录 /root/work/h100/data/ 下的:
|
# 默认抓取板卡运行目录 /root/work/h100/data/ 下的:
|
||||||
# power_data.db (+ -wal/-shm) 主机功率数据库
|
# power_data.db (+ -wal/-shm) 主机功率数据库
|
||||||
# feedback_data.db 反馈落盘数据库
|
# feedback_data.db 反馈落盘数据库
|
||||||
# pPowerManger.log 主机运行日志
|
# pccu_data.db (+ -wal/-shm) pCCU 帧日志数据库
|
||||||
# 可选 --journal 一并导出四个 systemd 服务的 journal 日志。
|
# pCanBridge_data.db (+ -wal/-shm) pCanBridge CAN 帧数据库
|
||||||
|
# pPowerManger.log / pCCU.log 运行日志
|
||||||
|
# 可选 --journal 一并导出各 systemd 服务的 journal 日志。
|
||||||
#
|
#
|
||||||
# 用法:
|
# 用法:
|
||||||
# ./scripts/fetch-data.sh # 下载 db + 日志到本地 data/board-<时间>/
|
# ./scripts/fetch-data.sh # 下载 db + 日志到本地 data/board-<时间>/
|
||||||
@@ -18,7 +20,7 @@
|
|||||||
# --user <user> 登录用户(默认 root)
|
# --user <user> 登录用户(默认 root)
|
||||||
# --board-dir <dir> 板卡部署根目录(默认 /root/work/h100)
|
# --board-dir <dir> 板卡部署根目录(默认 /root/work/h100)
|
||||||
# --out-dir <dir> 本地保存目录(默认 data/board-<时间>)
|
# --out-dir <dir> 本地保存目录(默认 data/board-<时间>)
|
||||||
# --journal 额外导出 4 个服务的 systemd journal 日志
|
# --journal 额外导出各服务的 systemd journal 日志
|
||||||
# -h, --help 显示帮助
|
# -h, --help 显示帮助
|
||||||
#
|
#
|
||||||
# 前置: 板卡已配免密 SSH(见 scripts/deploy.sh setup-ssh)。
|
# 前置: 板卡已配免密 SSH(见 scripts/deploy.sh setup-ssh)。
|
||||||
@@ -35,10 +37,16 @@ BOARD_DIR="/root/work/h100"
|
|||||||
OUT_DIR=""
|
OUT_DIR=""
|
||||||
DO_JOURNAL=0
|
DO_JOURNAL=0
|
||||||
|
|
||||||
SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU)
|
SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU pCanBridge)
|
||||||
|
|
||||||
# 板卡 data 目录下需要下载的文件(含 SQLite WAL/SHM 以保证数据完整)
|
# 板卡 data 目录下需要下载的文件(含 SQLite WAL/SHM 以保证数据完整)
|
||||||
DATA_FILES=(power_data.db power_data.db-wal power_data.db-shm feedback_data.db pPowerManger.log pccu_data.db pCCU.log)
|
DATA_FILES=(
|
||||||
|
power_data.db power_data.db-wal power_data.db-shm
|
||||||
|
feedback_data.db
|
||||||
|
pccu_data.db pccu_data.db-wal pccu_data.db-shm
|
||||||
|
pCanBridge_data.db pCanBridge_data.db-wal pCanBridge_data.db-shm
|
||||||
|
pPowerManger.log pCCU.log
|
||||||
|
)
|
||||||
|
|
||||||
info() { printf '\033[1;36m[fetch-data]\033[0m %s\n' "$*"; }
|
info() { printf '\033[1;36m[fetch-data]\033[0m %s\n' "$*"; }
|
||||||
ok() { printf '\033[1;32m[fetch-data]\033[0m %s\n' "$*"; }
|
ok() { printf '\033[1;32m[fetch-data]\033[0m %s\n' "$*"; }
|
||||||
@@ -46,7 +54,7 @@ warn() { printf '\033[1;33m[fetch-data]\033[0m %s\n' "$*"; }
|
|||||||
err() { printf '\033[1;31m[fetch-data]\033[0m %s\n' "$*"; }
|
err() { printf '\033[1;31m[fetch-data]\033[0m %s\n' "$*"; }
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
sed -n '2,26p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
|
sed -n '2,28p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user