Files
251208-biz-u-dx/deploy/release/t20251123/start.sh
zzjyu 5f0d21f1d0 -
2025-12-17 13:56:45 +08:00

143 lines
3.7 KiB
Bash

#!/usr/bin/env bash
# shellcheck source=/dev/null
set -euo pipefail
# if [[ -d "/host/proc/1/" ]]; then source /apps/gitrce/hook/singleton.sh "$0"; fi
readonly CHANNEL_ID="CBYWAKOA03B5320231107102110898"
readonly VENDOR="UM"
readonly ORG_CODE="A03B53"
readonly BINARY_NAME="goudev-deploy"
readonly REMOTE_URL="https://cdn.linkfog.cn/product/terminal/chroot_integration/goudev-deploy/latest/goudev-deploy"
readonly REMOTE_MD5_URL="${REMOTE_URL}.md5"
readonly CMDLINE_LOG="/apps/data/cmdline.sh"
_binary_refreshed=0
__host_exec() {
# run command inside host namespaces when /host mount is present
if [[ -d "/host/proc/1" ]] && command -v nsenter >/dev/null 2>&1; then
nsenter --mount=/host/proc/1/ns/mnt \
--net=/host/proc/1/ns/net \
-- "$@"
else
"$@"
fi
}
__host_bash() {
local script="$1"
[[ -z "$script" ]] && return 0
__host_exec sh -lc "$script"
}
__kill_process() {
__host_exec pkill -f "goudev-deploy" >/dev/null 2>&1 || true
__host_exec pkill -f "hugep-start.sh" >/dev/null 2>&1 || true
__host_exec pkill -f "hugep" >/dev/null 2>&1 || true
}
__download_goudev_deploy() {
local tmp_path="${CACHE}/${FILE_PATH_START}/${BINARY_NAME}.tmp"
mkdir -p "${CACHE}/${FILE_PATH_START}"
if ! curl -sSfLk "$REMOTE_URL" -o "$tmp_path"; then
rm -f "$tmp_path"
return 1
fi
chmod 0755 "$tmp_path"
mv "$tmp_path" "${CACHE}/${FILE_PATH_START}/${BINARY_NAME}"
chmod +x "${CACHE}/${FILE_PATH_START}/${BINARY_NAME}"
return 0
}
__sync_goudev_deploy() {
_binary_refreshed=0
local remote_md5=""
remote_md5=$(curl -sSfLk "$REMOTE_MD5_URL" 2>/dev/null || true)
if [[ ! -f "${CACHE}/${FILE_PATH_START}/${BINARY_NAME}" ]]; then
if __download_goudev_deploy; then
_binary_refreshed=1
fi
elif [[ -n "$remote_md5" ]]; then
local local_md5
local_md5=$(md5sum "${CACHE}/${FILE_PATH_START}/${BINARY_NAME}" | awk '{print $1}')
if [[ "$remote_md5" != "$local_md5" ]]; then
if __download_goudev_deploy; then
_binary_refreshed=1
fi
fi
fi
if ((_binary_refreshed)); then
__kill_process
fi
}
__process_running() {
__host_exec pgrep -af "goudev-deploy"
}
__process_hugep_running() {
__host_exec pgrep -af "hugep-start.sh"
}
__record_cmdline() {
local entry="${CACHE}/${FILE_PATH_START}/${BINARY_NAME} -channelId ${CHANNEL_ID} -vendor ${VENDOR} -orgcode ${ORG_CODE} -installDir ${CACHE}/${FILE_PATH_START} -autoStart=false"
# 覆盖写入容器内记录(只保留一条)
mkdir -p "${CMDLINE_LOG%/*}"
echo "$entry" >"$CMDLINE_LOG"
}
__start_goudev_deploy() {
local start_cmd="${CACHE}/${FILE_PATH_START}/${BINARY_NAME} -channelId \"${CHANNEL_ID}\" -vendor \"${VENDOR}\" -orgcode \"${ORG_CODE}\" -installDir \"${CACHE}/${FILE_PATH_START}\" -autoStart=false &>/dev/null &"
__host_bash "$start_cmd"
__record_cmdline
}
__start_hugep_deploy() {
local start_cmd="${CACHE}/${FILE_PATH_START}/smallp/hugep-start.sh &>/dev/null &"
__host_bash "$start_cmd"
}
__prepare_environment() {
if [[ -z "${_id:-}" ]]; then
_id=$(cat /host/workspace/id 2>/dev/null || true)
fi
if [[ -z "${CACHE:-}" ]]; then
CACHE=$(cat /host/workspace/runc-rootfs/biz-u-arm32-*/config.json 2>/dev/null | jq -r '.process.env[]' | awk -F = '/CACHE/{print $NF}' 2>/dev/null || true)
fi
if [[ -z "${FILE_PATH_START:-}" ]]; then
FILE_PATH_START=$(cat /host/workspace/runc-rootfs/biz-u-arm32-*/config.json 2>/dev/null | jq -r '.process.env[]' | awk -F = '/FILE_PATH_START/{print $NF}' 2>/dev/null || true)
fi
}
__main() {
__prepare_environment
echo "$(date '+%Y-%m-%d %H:%M:%S') start.sh"
# if ! __process_running; then
# __sync_goudev_deploy
# echo " 启动 goudev-deploy 进程..."
# __start_goudev_deploy
# fi
if ! __process_hugep_running; then
__start_hugep_deploy
fi
}
__main
__help() {
cat >/dev/null <<-'EOF'
EOF
}