Some checks failed
Проверка, сборка и развёртывание Magistr / Обязательные проверки (push) Successful in 1m23s
Проверка, сборка и развёртывание Magistr / Собрать backend image (push) Successful in 7m36s
Проверка, сборка и развёртывание Magistr / Собрать frontend image (push) Successful in 31s
Проверка, сборка и развёртывание Magistr / Проверить опубликованные образы (push) Failing after 4m56s
Проверка, сборка и развёртывание Magistr / Развернуть проверенные digests (push) Has been skipped
76 lines
2.5 KiB
Bash
Executable File
76 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
|
RUN_SCRIPT="$ROOT_DIR/scripts/run-ci-container.sh"
|
|
FIXTURE_DIR=$(mktemp -d)
|
|
CALL_LOG="$FIXTURE_DIR/docker-calls.log"
|
|
FAKE_BIN="$FIXTURE_DIR/bin"
|
|
SOURCE_DIR="$FIXTURE_DIR/source"
|
|
EXTRA_SOURCE_DIR="$FIXTURE_DIR/extra-source"
|
|
trap 'rm -rf "$FIXTURE_DIR"' EXIT
|
|
|
|
mkdir -p "$FAKE_BIN" "$SOURCE_DIR" "$EXTRA_SOURCE_DIR"
|
|
printf 'fixture\n' > "$SOURCE_DIR/pom.xml"
|
|
printf 'extra fixture\n' > "$EXTRA_SOURCE_DIR/backend.java"
|
|
|
|
cat > "$FAKE_BIN/docker" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
printf '%s\n' "$*" >> "$DOCKER_CALL_LOG"
|
|
case "$1" in
|
|
create)
|
|
printf 'ci-container-id\n'
|
|
;;
|
|
start)
|
|
exit "${DOCKER_START_EXIT_CODE:-0}"
|
|
;;
|
|
esac
|
|
EOF
|
|
chmod +x "$FAKE_BIN/docker"
|
|
|
|
DOCKER_CALL_LOG="$CALL_LOG" PATH="$FAKE_BIN:$PATH" \
|
|
bash "$RUN_SCRIPT" "$SOURCE_DIR" 'registry.local/test@sha256:abc' \
|
|
--copy "$EXTRA_SOURCE_DIR" /backend \
|
|
--env DOCKER_CONFIG=/workspace \
|
|
-- sh -c 'exit 0'
|
|
|
|
grep --fixed-strings \
|
|
'create --workdir /workspace --env DOCKER_CONFIG=/workspace registry.local/test@sha256:abc sh -c exit 0' \
|
|
"$CALL_LOG" >/dev/null
|
|
grep --fixed-strings \
|
|
"cp $SOURCE_DIR/. ci-container-id:/workspace" \
|
|
"$CALL_LOG" >/dev/null
|
|
grep --fixed-strings \
|
|
"cp $EXTRA_SOURCE_DIR/. ci-container-id:/backend" \
|
|
"$CALL_LOG" >/dev/null
|
|
grep --fixed-strings 'start --attach ci-container-id' "$CALL_LOG" >/dev/null
|
|
grep --fixed-strings 'rm --force ci-container-id' "$CALL_LOG" >/dev/null
|
|
if grep -Eq '(^|[[:space:]])(-v|--volume)([[:space:]]|=)' "$CALL_LOG"; then
|
|
printf 'Ошибка теста: helper использовал bind mount\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
: > "$CALL_LOG"
|
|
set +e
|
|
DOCKER_CALL_LOG="$CALL_LOG" DOCKER_START_EXIT_CODE=17 PATH="$FAKE_BIN:$PATH" \
|
|
bash "$RUN_SCRIPT" "$SOURCE_DIR" 'registry.local/test@sha256:abc' \
|
|
-- sh -c 'exit 17' >/dev/null 2>&1
|
|
status=$?
|
|
set -e
|
|
|
|
if (( status != 17 )); then
|
|
printf 'Ошибка теста: код контейнера 17 превратился в %d\n' "$status" >&2
|
|
exit 1
|
|
fi
|
|
grep --fixed-strings 'rm --force ci-container-id' "$CALL_LOG" >/dev/null
|
|
|
|
if PATH="$FAKE_BIN:$PATH" bash "$RUN_SCRIPT" "$FIXTURE_DIR/missing" \
|
|
'registry.local/test@sha256:abc' -- true >/dev/null 2>&1; then
|
|
printf 'Ошибка теста: отсутствующий каталог исходников не был отклонён\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
printf 'Проверка запуска CI-контейнеров без bind mount завершена успешно\n'
|