Commit 0deedc3b authored by Ivan Mazhukin's avatar Ivan Mazhukin

clenup after test

parent 707e5780
......@@ -123,6 +123,7 @@ bin/eepm
1. На удалённой стороне проверяется типовой путь `/srv/<user>/Projects/eepm`.
2. Если он найден, используется он.
3. Если он не найден, локальное дерево `eepm` синхронизируется на удалённую сторону через `rsync`.
4. После завершения теста синхронизированная временная копия удаляется.
Если выбран `--eepm-source builder64`, скрипт ожидает, что удалённое дерево уже существует в `/srv/...`.
......@@ -219,4 +220,5 @@ ${TMPDIR:-/tmp}/epm-docker-test
- поддерживается только `epm play`
- для синхронизации локального дерева на удалённую сторону используется `rsync`
- синхронизированная временная копия на удалённой стороне удаляется после завершения теста
- источник `local` ожидает либо запуска скрипта из корня `eepm`, либо передачи `--eepm-dir`
......@@ -24,6 +24,8 @@ INTERNAL_LOCAL_RUN=0
LOG_ROOT="$DEFAULT_LOG_ROOT"
LOG_FILE=""
REMOTE_ARGS=()
REMOTE_SYNC_DIR=""
RUN_TOKEN="$(date +%Y%m%d-%H%M%S)-$$"
usage() {
cat <<'EOF'
......@@ -233,7 +235,10 @@ remote_sync_dir_for_source() {
local_user="$(id -un)"
base_name="$(basename "$source_dir")"
printf '/tmp/epm-docker-test-sync/%s-%s\n' "$(slugify "$local_user")" "$(slugify "$base_name")"
printf '/tmp/epm-docker-test-sync/%s-%s-%s\n' \
"$(slugify "$local_user")" \
"$(slugify "$base_name")" \
"$(slugify "$RUN_TOKEN")"
}
sync_local_source_to_remote() {
......@@ -254,6 +259,21 @@ sync_local_source_to_remote() {
printf '%s\n' "$remote_dir"
}
cleanup_remote_sync_dir() {
local target="$1"
local remote_dir="$2"
[[ -n "$remote_dir" ]] || return 0
[[ "$remote_dir" == /tmp/epm-docker-test-sync/* ]] || {
warn "Skipping cleanup for unexpected remote path: $remote_dir"
return 0
}
build_ssh_base_args
info "Cleaning up remote sync dir: $target:$remote_dir"
ssh "${SSH_BASE_ARGS[@]}" "$target" rm -rf "$remote_dir"
}
create_log_file() {
local safe_app safe_system run_dir timestamp
......@@ -398,6 +418,7 @@ build_remote_args() {
local target
REMOTE_ARGS=(--internal-local-run --mode local)
REMOTE_SYNC_DIR=""
target="$(remote_target)"
if [[ "$SOURCE_KIND" == "local" ]]; then
......@@ -407,6 +428,7 @@ build_remote_args() {
info "Remote eepm tree found at: $remote_source"
else
remote_source="$(sync_local_source_to_remote "$explicit_source" "$target")"
REMOTE_SYNC_DIR="$remote_source"
fi
REMOTE_ARGS+=(--eepm-source explicit --eepm-dir "$remote_source")
elif [[ "$SOURCE_KIND" == "explicit" ]]; then
......@@ -416,6 +438,7 @@ build_remote_args() {
info "Remote eepm tree found at: $remote_source"
else
remote_source="$(sync_local_source_to_remote "$explicit_source" "$target")"
REMOTE_SYNC_DIR="$remote_source"
fi
REMOTE_ARGS+=(--eepm-source explicit --eepm-dir "$remote_source")
else
......@@ -430,6 +453,7 @@ build_remote_args() {
run_container_via_ssh() {
local target
local -a ssh_args
local status
require_command ssh
......@@ -446,7 +470,19 @@ run_container_via_ssh() {
bash -s --
)
ssh "${ssh_args[@]}" "${REMOTE_ARGS[@]}" <"$SCRIPT_PATH"
if ssh "${ssh_args[@]}" "${REMOTE_ARGS[@]}" <"$SCRIPT_PATH"; then
status=0
else
status=$?
fi
if [[ -n "$REMOTE_SYNC_DIR" ]]; then
if ! cleanup_remote_sync_dir "$target" "$REMOTE_SYNC_DIR"; then
warn "Failed to clean up remote sync dir: $REMOTE_SYNC_DIR"
fi
fi
return "$status"
}
run_once() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment