Refactor bootstrap script for SwarmUI management and enhance error handling
- Introduced functions `swarm_git_ok`, `clone_swarmui`, and `update_swarmui` to streamline the cloning and updating process of SwarmUI. - Improved error handling during the update process, ensuring a fallback to cloning if the update fails. - Enhanced logging messages for better visibility during cloning and updating operations. - Updated tests to verify the presence of new functions and logging messages in the bootstrap script.
This commit is contained in:
@@ -127,16 +127,30 @@ fi
|
|||||||
|
|
||||||
rm -f "${DATA_ROOT}/.gpu-rent-llm-only" 2>/dev/null || true
|
rm -f "${DATA_ROOT}/.gpu-rent-llm-only" 2>/dev/null || true
|
||||||
|
|
||||||
if [[ ! -d "${SWARM_ROOT}/.git" ]]; then
|
swarm_git_ok() {
|
||||||
log "clone SwarmUI -> ${SWARM_ROOT}"
|
# .git dir can exist after a failed/partial boot and still not be a repo.
|
||||||
|
[[ -d "${SWARM_ROOT}/.git" ]] \
|
||||||
|
&& git -C "$SWARM_ROOT" rev-parse --is-inside-work-tree >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
clone_swarmui() {
|
||||||
mkdir -p "$(dirname "$SWARM_ROOT")"
|
mkdir -p "$(dirname "$SWARM_ROOT")"
|
||||||
|
if [[ -e "$SWARM_ROOT" ]]; then
|
||||||
|
log "удаляю битый/неполный ${SWARM_ROOT} перед clone"
|
||||||
|
rm -rf "$SWARM_ROOT"
|
||||||
|
fi
|
||||||
|
log "clone SwarmUI -> ${SWARM_ROOT}"
|
||||||
git clone --depth 1 "$SWARM_REPO" "$SWARM_ROOT"
|
git clone --depth 1 "$SWARM_REPO" "$SWARM_ROOT"
|
||||||
elif [[ "${GPU_RENT_UPDATE_GIT:-1}" == "1" ]]; then
|
}
|
||||||
log "обновляю SwarmUI в ${SWARM_ROOT}"
|
|
||||||
|
update_swarmui() {
|
||||||
|
local branch
|
||||||
branch="$(git -C "$SWARM_ROOT" remote show origin 2>/dev/null | sed -n '/HEAD branch/s/.*: //p' || true)"
|
branch="$(git -C "$SWARM_ROOT" remote show origin 2>/dev/null | sed -n '/HEAD branch/s/.*: //p' || true)"
|
||||||
branch="${branch:-master}"
|
branch="${branch:-master}"
|
||||||
# shallow clone: deepen tip of default branch
|
# shallow clone: deepen tip of default branch
|
||||||
git -C "$SWARM_ROOT" fetch --depth 1 origin "$branch" || git -C "$SWARM_ROOT" fetch --depth 1 origin
|
git -C "$SWARM_ROOT" fetch --depth 1 origin "$branch" \
|
||||||
|
|| git -C "$SWARM_ROOT" fetch --depth 1 origin \
|
||||||
|
|| return 1
|
||||||
if git -C "$SWARM_ROOT" rev-parse --verify -q "origin/${branch}" >/dev/null; then
|
if git -C "$SWARM_ROOT" rev-parse --verify -q "origin/${branch}" >/dev/null; then
|
||||||
git -C "$SWARM_ROOT" checkout -B "$branch" "origin/${branch}"
|
git -C "$SWARM_ROOT" checkout -B "$branch" "origin/${branch}"
|
||||||
git -C "$SWARM_ROOT" reset --hard "origin/${branch}"
|
git -C "$SWARM_ROOT" reset --hard "origin/${branch}"
|
||||||
@@ -144,6 +158,16 @@ elif [[ "${GPU_RENT_UPDATE_GIT:-1}" == "1" ]]; then
|
|||||||
git -C "$SWARM_ROOT" pull --ff-only || true
|
git -C "$SWARM_ROOT" pull --ff-only || true
|
||||||
fi
|
fi
|
||||||
log "SwarmUI @ $(git -C "$SWARM_ROOT" rev-parse --short HEAD)"
|
log "SwarmUI @ $(git -C "$SWARM_ROOT" rev-parse --short HEAD)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! swarm_git_ok; then
|
||||||
|
clone_swarmui
|
||||||
|
elif [[ "${GPU_RENT_UPDATE_GIT:-1}" == "1" ]]; then
|
||||||
|
log "обновляю SwarmUI в ${SWARM_ROOT}"
|
||||||
|
if ! update_swarmui; then
|
||||||
|
log "WARN: git update failed (exit $?) — переклонирую"
|
||||||
|
clone_swarmui
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
log "SwarmUI уже в ${SWARM_ROOT} (update off)"
|
log "SwarmUI уже в ${SWARM_ROOT} (update off)"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -23,3 +23,5 @@ def test_bootstrap_script_is_native_swarmui():
|
|||||||
assert "install_dotnet_via_curl" in script
|
assert "install_dotnet_via_curl" in script
|
||||||
assert "chown -R" in script
|
assert "chown -R" in script
|
||||||
assert "wget" in script
|
assert "wget" in script
|
||||||
|
assert "swarm_git_ok" in script
|
||||||
|
assert "переклонирую" in script or "перед clone" in script
|
||||||
|
|||||||
Reference in New Issue
Block a user