Проект переехал в Gitea StackWorks: обновления, установка одной командой и ISO берут код с git.stackworks.ru, запасной ZIP скачивается оттуда же, ноды со старым адресом GitHub переключаются сами
Этот коммит содержится в:
@@ -10,11 +10,11 @@ BRANCH="${VIRTUALITY_UPDATE_BRANCH:-main}"
|
||||
TMP_DIR="${STATE_DIR}/tmp"
|
||||
# shellcheck source=scripts/update_target.sh
|
||||
. "$(dirname "${BASH_SOURCE[0]}")/update_target.sh"
|
||||
mkdir -p "$STATE_DIR" "$TMP_DIR" "$(dirname "$LOG_FILE")"
|
||||
MOVED_REMOTE="$(migrate_update_remote)"
|
||||
resolve_update_target
|
||||
REPO_ZIP_URL="${VIRTUALITY_UPDATE_ZIP_URL:-$TARGET_ZIP_URL}"
|
||||
|
||||
mkdir -p "$STATE_DIR" "$TMP_DIR" "$(dirname "$LOG_FILE")"
|
||||
|
||||
now() { date '+%Y-%m-%d %H:%M:%S'; }
|
||||
json_escape() { python3 -c 'import json,sys; print(json.dumps(sys.stdin.read())[1:-1])'; }
|
||||
write_state() {
|
||||
@@ -58,7 +58,7 @@ fetch_zip_update() {
|
||||
|
||||
log "Fallback update via ZIP started"
|
||||
log "ZIP URL: $REPO_ZIP_URL"
|
||||
write_state "running" "GitHub git fetch не сработал, пробуем ZIP fallback"
|
||||
write_state "running" "git fetch не сработал, пробуем скачать ZIP-архив"
|
||||
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
if ! try_run curl -L --connect-timeout 20 --max-time 240 --retry 3 --retry-delay 3 -o "$zip_file" "$REPO_ZIP_URL"; then
|
||||
@@ -111,7 +111,8 @@ fetch_zip_update() {
|
||||
STARTED_AT="$(now)"
|
||||
write_state "running" "Обновление запущено"
|
||||
log "============================================================"
|
||||
log "Virtuality GitHub update started"
|
||||
log "Virtuality update started"
|
||||
[ -n "$MOVED_REMOTE" ] && log "$MOVED_REMOTE"
|
||||
log "source: $SOURCE_DIR"
|
||||
log "remote: $REMOTE"
|
||||
log "branch: $BRANCH"
|
||||
@@ -129,7 +130,7 @@ log "before version: $BEFORE_VERSION"
|
||||
GIT_UPDATED=0
|
||||
if [ -d "$SOURCE_DIR/.git" ]; then
|
||||
cd "$SOURCE_DIR" || exit 1
|
||||
write_state "running" "Получаем изменения из GitHub через git"
|
||||
write_state "running" "Получаем изменения через git"
|
||||
if try_run git fetch --tags --force "$REMOTE" "$BRANCH"; then
|
||||
resolve_update_target
|
||||
log "channel: ${UPDATE_CHANNEL}, target: ${TARGET_LABEL}"
|
||||
@@ -140,7 +141,7 @@ if [ -d "$SOURCE_DIR/.git" ]; then
|
||||
log "Local changes before update:"
|
||||
printf '%s\n' "$LOCAL_STATUS" >> "$LOG_FILE"
|
||||
fi
|
||||
write_state "running" "Синхронизируем исходники с GitHub через git reset"
|
||||
write_state "running" "Синхронизируем исходники через git reset"
|
||||
log "Deploy mode: git checkout -B ${BRANCH} ${TARGET_LABEL}"
|
||||
if try_run git checkout -q -f -B "$BRANCH" "$TARGET_COMMIT" && try_run git clean -fd; then
|
||||
GIT_UPDATED=1
|
||||
@@ -159,7 +160,7 @@ fi
|
||||
|
||||
if [ "$GIT_UPDATED" != "1" ]; then
|
||||
if ! fetch_zip_update; then
|
||||
write_state "error" "Не удалось обновиться ни через git, ни через ZIP fallback. Проверь доступ к github.com, curl/wget/unzip и DNS."
|
||||
write_state "error" "Не удалось обновиться ни через git, ни через ZIP fallback. Проверьте доступ сервера к ${REPO_ZIP_URL%%/archive/*}, curl/wget/unzip и DNS."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@@ -180,6 +181,6 @@ run_step bash scripts/install_web_panel.sh
|
||||
write_state "running" "Перезапускаем virtuality-web"
|
||||
run_step systemctl restart virtuality-web
|
||||
|
||||
log "Virtuality GitHub update finished successfully"
|
||||
log "Virtuality update finished successfully"
|
||||
write_state "success" "Обновление завершено: ${BEFORE_VERSION} → ${AFTER_VERSION}"
|
||||
exit 0
|
||||
|
||||
@@ -35,10 +35,14 @@ JSON
|
||||
}
|
||||
|
||||
diag_network() {
|
||||
local web repo_host
|
||||
web="$(repo_web_url)"
|
||||
repo_host="${web#https://}"
|
||||
repo_host="${repo_host%%/*}"
|
||||
log "diagnostics: host=$(hostname 2>/dev/null || echo unknown)"
|
||||
log "diagnostics: date=$(date -Is 2>/dev/null || date)"
|
||||
if command -v getent >/dev/null 2>&1; then
|
||||
getent hosts github.com >> "$LOG_FILE" 2>&1 || log "diagnostics: DNS github.com failed"
|
||||
getent hosts "$repo_host" >> "$LOG_FILE" 2>&1 || log "diagnostics: DNS $repo_host failed"
|
||||
fi
|
||||
if command -v git >/dev/null 2>&1; then
|
||||
git --version >> "$LOG_FILE" 2>&1 || true
|
||||
@@ -47,7 +51,7 @@ diag_network() {
|
||||
log "diagnostics: git not found"
|
||||
fi
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
curl -I -L --connect-timeout 10 --max-time 25 https://github.com/ >> "$LOG_FILE" 2>&1 || log "diagnostics: curl github.com failed"
|
||||
curl -I -L --connect-timeout 10 --max-time 25 "$web" >> "$LOG_FILE" 2>&1 || log "diagnostics: curl $repo_host failed"
|
||||
else
|
||||
log "diagnostics: curl not found"
|
||||
fi
|
||||
@@ -89,6 +93,9 @@ diag_network() {
|
||||
current="unknown"
|
||||
fi
|
||||
|
||||
moved="$(migrate_update_remote)"
|
||||
[ -n "$moved" ] && log "$moved"
|
||||
|
||||
if [ -d "$SOURCE_DIR/.git" ]; then
|
||||
if git fetch --quiet --tags --force "$REMOTE" "$BRANCH" >> "$LOG_FILE" 2>&1; then
|
||||
resolve_update_target
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
# main — every change on the main branch
|
||||
# Needs SOURCE_DIR, REMOTE and BRANCH; sets UPDATE_CHANNEL, TARGET_REF, TARGET_LABEL, TARGET_ZIP_URL.
|
||||
|
||||
# Where the project lives. Nodes installed before the move from GitHub are switched over by migrate_update_remote.
|
||||
DEFAULT_REPO_URL="https://git.stackworks.ru/viktor/virtuality.git"
|
||||
LEGACY_REPO_URLS=("https://github.com/viktor138irk/virtuality.git" "https://github.com/viktor138irk/virtuality")
|
||||
|
||||
update_channel() {
|
||||
local value="${VIRTUALITY_UPDATE_CHANNEL:-}"
|
||||
if [[ -z "$value" && -f /var/lib/virtuality/config/web.env ]]; then
|
||||
@@ -12,18 +16,44 @@ update_channel() {
|
||||
[[ "$value" == "main" ]] && echo main || echo stable
|
||||
}
|
||||
|
||||
remote_url() {
|
||||
git -C "$SOURCE_DIR" remote get-url "$REMOTE" 2>/dev/null || true
|
||||
}
|
||||
|
||||
migrate_update_remote() {
|
||||
[[ -d "${SOURCE_DIR}/.git" ]] || return 0
|
||||
local url legacy
|
||||
url="$(remote_url)"
|
||||
for legacy in "${LEGACY_REPO_URLS[@]}"; do
|
||||
if [[ "$url" == "$legacy" ]]; then
|
||||
git -C "$SOURCE_DIR" remote set-url "$REMOTE" "$DEFAULT_REPO_URL" && echo "update remote moved: $url -> $DEFAULT_REPO_URL"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Web address of the repository for ZIP downloads: the remote itself when it is https, otherwise the default.
|
||||
# Gitea and GitHub both serve <repo>/archive/<branch or tag>.zip.
|
||||
repo_web_url() {
|
||||
local url=""
|
||||
[[ -d "${SOURCE_DIR}/.git" ]] && url="$(remote_url)"
|
||||
[[ "$url" == https://* ]] || url="$DEFAULT_REPO_URL"
|
||||
echo "${url%.git}"
|
||||
}
|
||||
|
||||
resolve_update_target() {
|
||||
local tag=""
|
||||
local tag="" web
|
||||
web="$(repo_web_url)"
|
||||
UPDATE_CHANNEL="$(update_channel)"
|
||||
TARGET_REF="${REMOTE}/${BRANCH}"
|
||||
TARGET_LABEL="${BRANCH}"
|
||||
TARGET_ZIP_URL="https://github.com/viktor138irk/virtuality/archive/refs/heads/${BRANCH}.zip"
|
||||
TARGET_ZIP_URL="${web}/archive/${BRANCH}.zip"
|
||||
if [[ "$UPDATE_CHANNEL" == "stable" && -d "${SOURCE_DIR}/.git" ]]; then
|
||||
tag="$(git -C "$SOURCE_DIR" tag --list 'v[0-9]*' --sort=-v:refname | grep -E '^v[0-9]+(\.[0-9]+)*$' | head -n1 || true)"
|
||||
if [[ -n "$tag" ]]; then
|
||||
TARGET_REF="refs/tags/${tag}"
|
||||
TARGET_LABEL="$tag"
|
||||
TARGET_ZIP_URL="https://github.com/viktor138irk/virtuality/archive/refs/tags/${tag}.zip"
|
||||
TARGET_ZIP_URL="${web}/archive/${tag}.zip"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user