fix: consume packaged runtime sources offline
This commit is contained in:
parent
7d377e1e75
commit
a457a9f438
@ -7,6 +7,7 @@ on:
|
||||
paths:
|
||||
- 'scripts/create-ai-workspace-offline-package.sh'
|
||||
- 'scripts/ai-workspace-offline-install.sh'
|
||||
- 'scripts/setup-ai-workspace-all-in-one.sh'
|
||||
- '.github/workflows/offline-package-ai-workspace-installer.yaml'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
|
||||
@ -11,6 +11,7 @@ STATE_DIR="${AI_WORKSPACE_OFFLINE_STATE_DIR:-/var/lib/ai-workspace/offline}"
|
||||
AI_WORKSPACE_DEPLOYMENT_LOCK_TIMEOUT="${AI_WORKSPACE_DEPLOYMENT_LOCK_TIMEOUT:-1800}"
|
||||
AI_WORKSPACE_APT_LOCK_TIMEOUT="${AI_WORKSPACE_APT_LOCK_TIMEOUT:-900}"
|
||||
APT_SOURCE_FILE="/etc/apt/sources.list.d/ai-workspace-offline.list"
|
||||
SAFE_GIT_DIRS=()
|
||||
APT_LOCAL_OPTIONS=(
|
||||
-o "Dir::Etc::sourcelist=sources.list.d/ai-workspace-offline.list"
|
||||
-o "Dir::Etc::sourceparts=-"
|
||||
@ -25,6 +26,14 @@ warn() {
|
||||
printf '\033[1;33m[WARN]\033[0m %s\n' "$*" >&2
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
rm -f "${APT_SOURCE_FILE}"
|
||||
local git_dir
|
||||
for git_dir in "${SAFE_GIT_DIRS[@]}"; do
|
||||
git config --system --unset-all safe.directory "${git_dir}" >/dev/null 2>&1 || true
|
||||
done
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "Run this installer as root or with sudo." >&2
|
||||
@ -108,10 +117,24 @@ configure_local_apt_repo() {
|
||||
cat > "${APT_SOURCE_FILE}" <<EOF
|
||||
deb [trusted=yes] file:${APT_DIR} ./
|
||||
EOF
|
||||
trap 'rm -f "${APT_SOURCE_FILE}"' EXIT
|
||||
apt-get "${APT_LOCAL_OPTIONS[@]}" update
|
||||
}
|
||||
|
||||
configure_local_git_sources() {
|
||||
local repo git_dir
|
||||
for repo in \
|
||||
"${ROOT}/repos/xworkspace-console" \
|
||||
"${ROOT}/repos/qmd" \
|
||||
"${ROOT}/repos/litellm"; do
|
||||
git_dir="${repo}/.git"
|
||||
[ -d "${git_dir}" ] || continue
|
||||
if ! git config --system --get-all safe.directory 2>/dev/null | grep -Fxq "${git_dir}"; then
|
||||
git config --system --add safe.directory "${git_dir}"
|
||||
SAFE_GIT_DIRS+=("${git_dir}")
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
append_available_package() {
|
||||
local -n package_list=$1
|
||||
local package=$2
|
||||
@ -220,6 +243,8 @@ run_bootstrap() {
|
||||
|
||||
export PLAYBOOK_DIR="${PLAYBOOK_DIR:-${ROOT}/repos/playbooks}"
|
||||
export XWORKSPACE_CONSOLE_DIR="${XWORKSPACE_CONSOLE_DIR:-${ROOT}/repos/xworkspace-console}"
|
||||
export XWORKSPACE_CONSOLE_SOURCE_REPO="${XWORKSPACE_CONSOLE_SOURCE_REPO:-file://${ROOT}/repos/xworkspace-console}"
|
||||
export XWORKSPACE_CONSOLE_SOURCE_VERSION="${XWORKSPACE_CONSOLE_SOURCE_VERSION:-$(cat "${ROOT}/metadata/xworkspace-console.commit")}"
|
||||
export XWORKSPACE_CORE_SKILLS_DIR="${XWORKSPACE_CORE_SKILLS_DIR:-${ROOT}/repos/xworkspace-core-skills}"
|
||||
export XWORKMATE_BRIDGE_SOURCE_DIR="${XWORKMATE_BRIDGE_SOURCE_DIR:-${ROOT}/repos/xworkmate-bridge}"
|
||||
export QMD_SOURCE_REPO="${QMD_SOURCE_REPO:-file://${ROOT}/repos/qmd}"
|
||||
@ -238,10 +263,12 @@ run_bootstrap() {
|
||||
|
||||
main() {
|
||||
require_root
|
||||
trap cleanup EXIT
|
||||
acquire_deployment_lock
|
||||
wait_for_apt_locks
|
||||
configure_local_apt_repo
|
||||
install_offline_prerequisites
|
||||
configure_local_git_sources
|
||||
install_bundled_binaries
|
||||
load_container_images
|
||||
configure_language_package_caches
|
||||
|
||||
@ -23,6 +23,8 @@ set -euo pipefail
|
||||
# Unified auth token passed to xworkmate-bridge, LiteLLM, OpenClaw, and Vault.
|
||||
# PLAYBOOK_DIR (optional local playbooks checkout; useful for macOS validation)
|
||||
# XWORKSPACE_CONSOLE_DIR (optional local xworkspace-console checkout for macOS)
|
||||
# XWORKSPACE_CONSOLE_SOURCE_REPO / XWORKSPACE_CONSOLE_SOURCE_VERSION
|
||||
# (optional Git source used by the Linux console playbook)
|
||||
# QMD_SOURCE_REPO / LITELLM_SOURCE_REPO (optional local git sources for offline installs)
|
||||
# AI_WORKSPACE_OFFLINE_MODE=auto (default) | force | off
|
||||
# AI_WORKSPACE_OFFLINE_PACKAGE (local tarball/directory or URL)
|
||||
@ -505,6 +507,8 @@ run_offline_installer() {
|
||||
ANSIBLE_VAULT_PASSWORD \
|
||||
AI_WORKSPACE_AUTH_TOKEN_FILE \
|
||||
AI_WORKSPACE_VAULT_PASSWORD_FILE \
|
||||
XWORKSPACE_CONSOLE_SOURCE_REPO \
|
||||
XWORKSPACE_CONSOLE_SOURCE_VERSION \
|
||||
AI_WORKSPACE_APT_LOCK_TIMEOUT; do
|
||||
if [ -n "${!env_name+x}" ]; then
|
||||
env_args+=("$env_name=${!env_name}")
|
||||
@ -963,7 +967,10 @@ PY
|
||||
}
|
||||
|
||||
ensure_core_skills_source() {
|
||||
if [ -d "$XWORKSPACE_CORE_SKILLS_DIR/.git" ]; then
|
||||
if [ "${AI_WORKSPACE_OFFLINE_ACTIVE:-false}" = "true" ] &&
|
||||
[ -d "$XWORKSPACE_CORE_SKILLS_DIR/skills" ]; then
|
||||
info "Using packaged xworkspace-core-skills directory at $XWORKSPACE_CORE_SKILLS_DIR"
|
||||
elif [ -d "$XWORKSPACE_CORE_SKILLS_DIR/.git" ]; then
|
||||
info "Updating xworkspace-core-skills checkout at $XWORKSPACE_CORE_SKILLS_DIR..."
|
||||
git -C "$XWORKSPACE_CORE_SKILLS_DIR" fetch origin
|
||||
git -C "$XWORKSPACE_CORE_SKILLS_DIR" reset --hard origin/main
|
||||
@ -979,7 +986,10 @@ ensure_core_skills_source() {
|
||||
}
|
||||
|
||||
ensure_xworkmate_bridge_source() {
|
||||
if [ -d "$XWORKMATE_BRIDGE_SOURCE_DIR/.git" ]; then
|
||||
if [ "${AI_WORKSPACE_OFFLINE_ACTIVE:-false}" = "true" ] &&
|
||||
[ -f "$XWORKMATE_BRIDGE_SOURCE_DIR/go.mod" ]; then
|
||||
info "Using packaged xworkmate-bridge source at $XWORKMATE_BRIDGE_SOURCE_DIR"
|
||||
elif [ -d "$XWORKMATE_BRIDGE_SOURCE_DIR/.git" ]; then
|
||||
info "Updating xworkmate-bridge checkout at $XWORKMATE_BRIDGE_SOURCE_DIR..."
|
||||
git -C "$XWORKMATE_BRIDGE_SOURCE_DIR" fetch origin
|
||||
git -C "$XWORKMATE_BRIDGE_SOURCE_DIR" checkout "$XWORKMATE_BRIDGE_BRANCH"
|
||||
@ -1459,6 +1469,8 @@ append_var "XWORKSPACE_CONSOLE_ENABLE_XRDP" "xworkspace_console_enable_xrdp"
|
||||
append_var "AI_WORKSPACE_RUNTIME_MODES" "ai_workspace_runtime_modes"
|
||||
append_var "POSTGRESQL_DEPLOY_MODE" "postgresql_deploy_mode"
|
||||
append_var "AI_WORKSPACE_APT_LOCK_TIMEOUT" "ai_workspace_apt_lock_timeout"
|
||||
append_var "XWORKSPACE_CONSOLE_SOURCE_REPO" "xworkspace_console_source_repo"
|
||||
append_var "XWORKSPACE_CONSOLE_SOURCE_VERSION" "xworkspace_console_source_version"
|
||||
append_var "QMD_SOURCE_REPO" "qmd_source_repo"
|
||||
append_var "QMD_VERSION" "qmd_version"
|
||||
append_var "LITELLM_SOURCE_REPO" "litellm_source_repo"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user