Commit a481bf15 authored by Ivan Mazhukin's avatar Ivan Mazhukin

restore bootstrap in --exec

parent f88ade56
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
- `--builder-path <path>`: явный builder64-путь вместо дефолта - `--builder-path <path>`: явный builder64-путь вместо дефолта
- `--preset <all|russian|main>`: добавить набор систем - `--preset <all|russian|main>`: добавить набор систем
- `--latest`: передать `--latest` в `epm play` (принудительно последняя версия) - `--latest`: передать `--latest` в `epm play` (принудительно последняя версия)
- `--exec <cmd>`: выполнить произвольную shell-команду вместо `epm play` без bootstrap системы - `--exec <cmd>`: выполнить произвольную shell-команду вместо `epm play` после bootstrap системы
- `--parallel`: запустить все тесты параллельно - `--parallel`: запустить все тесты параллельно
- `-j <N>`: запустить не более N тестов одновременно - `-j <N>`: запустить не более N тестов одновременно
- `--log-root <path>`: каталог для логов - `--log-root <path>`: каталог для логов
...@@ -220,9 +220,9 @@ Runner: local docker (inside ssh session, user: builder-robot) ...@@ -220,9 +220,9 @@ Runner: local docker (inside ssh session, user: builder-robot)
./bin/eepm play --auto <app> ./bin/eepm play --auto <app>
``` ```
В режиме `--exec` bootstrap пропускается: команда запускается через `sh -c` сразу после подготовки временного `HOME`. Если доступно дерево `eepm`, его `bin` добавляется в `PATH`. В режиме `--exec` выполняется тот же bootstrap, после чего команда запускается через `sh -c`. Для этого режима также требуется доступное дерево `eepm`; его `bin` добавляется в `PATH`.
Сейчас bootstrap для `play` завязан на семейство системы: Сейчас bootstrap для `play` и `--exec` завязан на семейство системы:
- `altlinux|alt`: `repo set etersoft`, `update`, затем установка `wget glibc-pthread file` - `altlinux|alt`: `repo set etersoft`, `update`, затем установка `wget glibc-pthread file`
- `debian|ubuntu`: `update`, затем установка `wget ca-certificates coreutils file` - `debian|ubuntu`: `update`, затем установка `wget ca-certificates coreutils file`
......
...@@ -77,7 +77,7 @@ Options: ...@@ -77,7 +77,7 @@ Options:
--preset <all|russian|main> --preset <all|russian|main>
Add a named system preset Add a named system preset
--latest Pass --latest to epm play --latest Pass --latest to epm play
--exec <cmd> Run arbitrary shell command instead of epm play --exec <cmd> Run arbitrary shell command after bootstrap
--parallel Run tests in parallel (all at once) --parallel Run tests in parallel (all at once)
-j <N> Run up to N tests in parallel -j <N> Run up to N tests in parallel
--log-root <path> Directory for saved logs --log-root <path> Directory for saved logs
...@@ -295,29 +295,6 @@ resolve_source_path() { ...@@ -295,29 +295,6 @@ resolve_source_path() {
esac esac
} }
resolve_exec_source_path() {
local candidate
case "$SOURCE_KIND" in
local|explicit)
candidate="${SOURCE_PATH:-$(pwd -P)}"
;;
builder64)
candidate="${BUILDER_PATH:-$(default_builder_source_path)}"
;;
*)
fatal "Unsupported eepm source kind: $SOURCE_KIND"
;;
esac
[[ -n "$candidate" ]] || return 0
candidate="$(realpath "$candidate" 2>/dev/null || printf '%s\n' "$candidate")"
if [[ -d "$candidate" && -f "$candidate/bin/eepm" && -r "$candidate/bin/eepm" ]]; then
printf '%s\n' "$candidate"
fi
}
remote_target() { remote_target() {
[[ -n "$REMOTE_USER" ]] || fatal "Remote user is empty" [[ -n "$REMOTE_USER" ]] || fatal "Remote user is empty"
printf '%s@%s\n' "$REMOTE_USER" "$REMOTE_HOST" printf '%s@%s\n' "$REMOTE_USER" "$REMOTE_HOST"
...@@ -528,10 +505,6 @@ else ...@@ -528,10 +505,6 @@ else
cd "$HOME" cd "$HOME"
fi fi
if [ "$TEST_COMMAND" = "exec" ]; then
exec sh -c "$1"
fi
printf '[container] bootstrap: os_id=%s\n' "$os_id" >&2 printf '[container] bootstrap: os_id=%s\n' "$os_id" >&2
if [ "$HAS_SOURCE" -ne 1 ]; then if [ "$HAS_SOURCE" -ne 1 ]; then
...@@ -573,6 +546,9 @@ case "$TEST_COMMAND" in ...@@ -573,6 +546,9 @@ case "$TEST_COMMAND" in
shift shift
exec bash ./bin/eepm play --auto "$@" "$APP_NAME" exec bash ./bin/eepm play --auto "$@" "$APP_NAME"
;; ;;
exec)
exec sh -c "$1"
;;
*) *)
printf '[container] unsupported test command: %s\n' "$TEST_COMMAND" >&2 printf '[container] unsupported test command: %s\n' "$TEST_COMMAND" >&2
exit 64 exit 64
...@@ -655,11 +631,6 @@ build_remote_args() { ...@@ -655,11 +631,6 @@ build_remote_args() {
REMOTE_SYNC_DIR="" REMOTE_SYNC_DIR=""
target="$(remote_target)" target="$(remote_target)"
if [[ -n "$EXEC_COMMAND" ]]; then
REMOTE_ARGS+=(--exec "$EXEC_COMMAND" "$SYSTEM_IMAGE")
return 0
fi
if [[ "$SOURCE_KIND" == "local" || "$SOURCE_KIND" == "explicit" ]]; then if [[ "$SOURCE_KIND" == "local" || "$SOURCE_KIND" == "explicit" ]]; then
if remote_source="$(find_remote_builder_source_path "$target")"; then if remote_source="$(find_remote_builder_source_path "$target")"; then
info "Remote eepm tree found at: $remote_source" info "Remote eepm tree found at: $remote_source"
...@@ -736,11 +707,7 @@ run_once() { ...@@ -736,11 +707,7 @@ run_once() {
case "$run_mode" in case "$run_mode" in
auto) auto)
if can_use_local_docker; then if can_use_local_docker; then
if [[ -n "$EXEC_COMMAND" ]]; then resolved_source="$(resolve_source_path)"
resolved_source="$(resolve_exec_source_path)"
else
resolved_source="$(resolve_source_path)"
fi
run_container_locally "$resolved_source" run_container_locally "$resolved_source"
else else
warn "Local Docker is unavailable; falling back to ssh runner" warn "Local Docker is unavailable; falling back to ssh runner"
...@@ -748,11 +715,7 @@ run_once() { ...@@ -748,11 +715,7 @@ run_once() {
fi fi
;; ;;
local) local)
if [[ -n "$EXEC_COMMAND" ]]; then resolved_source="$(resolve_source_path)"
resolved_source="$(resolve_exec_source_path)"
else
resolved_source="$(resolve_source_path)"
fi
run_container_locally "$resolved_source" run_container_locally "$resolved_source"
;; ;;
remote) remote)
......
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