Commit d8d81b1f authored by Ivan Mazhukin's avatar Ivan Mazhukin Committed by Vitaly Lipatov

epm ci FULL_TEST: use only 1 container for download

epm ci FULL_TEST: don't use --latest after download stage epm ci: use app_os_type naming epm ci: add fedora anchors & xz to debian
parent ed2f1f1e
Pipeline #17427 passed with stage
in 18 seconds
......@@ -10,7 +10,8 @@
ветку `ci-generated`. Для пресетов `FULL_TEST` и `GET_VERSION` используются
отдельные ветки: `ci-generated-full-test` и `ci-generated-get-version`.
- Сгенерированный пайплайн выполняет:
- download_test: `ci/prepare_ipfs.sh`
- download_test: `ci/prepare_ipfs.sh` в одном контейнере `alt:p11`
последовательно для всех приложений
- publish_download_logs: `ci/push-ipfs-db.sh`
- test: `ci/run_one_ci.sh`
- summary: `ci/push-results-ci.sh`
......@@ -28,9 +29,14 @@
Переменные планировщика (GitLab UI -> CI/CD -> Schedules -> Variables)
- Пресеты:
- `FULL_TEST`: полный прогон по IPFS на `alt:sisyphus` и `debian:bookworm`,
включает `CI_DOWNLOAD`, `CI_USE_IPFS` и `CI_IPFS_UPDATE`, тестирует все
- `FULL_TEST`: раздельный полный прогон.
- Скачивание и обновление `eget-ipfs-db.txt` выполняются в `download_test`
на `alt:p11` (один контейнер).
- Тесты запускаются на `alt:sisyphus`, `debian:bookworm` и
`fedora:latest` только с
`--ipfs` (без `CI_IPFS_UPDATE` в тестовых job), тестируются все
приложения.
- Включает `CI_DOWNLOAD` и `CI_USE_IPFS`.
- `GET_VERSION`: сбор версий на `alt:p11`, включает `CI_USE_IPFS` и
`CI_IPFS_UPDATE`, тестирует все приложения.
- `CI_APPS`: список приложений для теста, разделенный пробелами.
......@@ -38,7 +44,7 @@
- Если пусто или не задано, берутся все приложения из `epm play --short`.
- Если задан `FULL_TEST` или `GET_VERSION`, `CI_APPS` игнорируется.
- `CI_SYSTEMS`: список docker-образов для теста, разделенный пробелами.
- Пример: `CI_SYSTEMS=alt:sisyphus debian:bookworm`
- Пример: `CI_SYSTEMS=alt:sisyphus debian:bookworm fedora:latest`
- Если пусто или не задано, по умолчанию `alt:sisyphus debian:bookworm`.
- Если задан `FULL_TEST` или `GET_VERSION`, `CI_SYSTEMS` игнорируется.
......@@ -62,8 +68,12 @@
Переменные IPFS
- `CI_DOWNLOAD`: включает стадии загрузки и публикации IPFS базы.
- В стадии `download_test` перед каждым запуском `ci/prepare_ipfs.sh`
используется фиксированная задержка `90` секунд.
- `CI_USE_IPFS`: включает флаг `--ipfs` для `epm play`.
- `CI_IPFS_UPDATE`: включает обновление IPFS базы во время теста.
- Для `FULL_TEST` эта переменная игнорируется, чтобы разделить этапы:
скачивание только в `download_test`, тесты только через `--ipfs`.
- При включенном `CI_IPFS_UPDATE` и отсутствии `ipfs` устанавливается `kubo`.
- Для обновления базы используется внешний IPFS API:
`/ip4/91.232.225.49/tcp/5001`.
......
......@@ -28,13 +28,26 @@
.test_debian_ipfs: &test_debian_ipfs
before_script:
- ./bin/epm update
- ./bin/epm install -y bash wget ca-certificates coreutils file
- ./bin/epm install -y bash wget ca-certificates coreutils file xz-utils
- mkdir -p /var/lib/eepm
- cp ipfs/eget-ipfs-db.txt /var/lib/eepm/eget-ipfs-db.txt
.test_debian_latest: &test_debian_latest
before_script:
- ./bin/epm update
- ./bin/epm install -y bash wget ca-certificates coreutils file xz-utils
- mkdir -p /var/lib/eepm
.test_fedora_ipfs: &test_fedora_ipfs
before_script:
- ./bin/epm update
- ./bin/epm install -y bash wget ca-certificates coreutils file
- mkdir -p /var/lib/eepm
- cp ipfs/eget-ipfs-db.txt /var/lib/eepm/eget-ipfs-db.txt
.test_fedora_latest: &test_fedora_latest
before_script:
- ./bin/epm update
- ./bin/epm install -y bash wget ca-certificates coreutils file
- mkdir -p /var/lib/eepm
......
download_jobs()
{
for app in $apps; do
local safe_app="${app//[^a-zA-Z0-9_]/_}"
cat <<EOF
download_${safe_app}_p11:
cat <<'EOF'
download_all_p11:
stage: download_test
allow_failure: true
image: alt:p11
......@@ -16,7 +13,17 @@ download_${safe_app}_p11:
- ./bin/epm -y install wget glibc-pthread file patool
- ./bin/epm play --auto --ipfs kubo
script:
- bash ./ci/prepare_ipfs.sh ${app}
- mkdir -p ipfs/logs ipfs/errors
- echo "NOTE detailed download output is hidden see artifacts ipfs/logs and ipfs/errors"
EOF
for app in $apps; do
cat <<EOF
- echo "Sleep 90s before download ${app}"
- sleep 90
- if ! bash ./ci/prepare_ipfs.sh ${app} >/dev/null 2>&1; then echo "WARN download failed ${app}, see ipfs/errors/${app}-download.log"; else echo "OK download ${app}"; fi
EOF
done
cat <<'EOF'
artifacts:
when: always
expire_in: 7 days
......@@ -24,7 +31,6 @@ download_${safe_app}_p11:
- ipfs
EOF
done
}
publish_job()
......@@ -37,21 +43,15 @@ publish_download_logs:
- access
when: always
dependencies:
EOF
for app in $apps; do
local safe_app="${app//[^a-zA-Z0-9_]/_}"
cat <<EOF
- download_${safe_app}_p11
EOF
done
cat <<'EOF'
- download_all_p11
before_script:
- ./bin/epm -y repo set etersoft
- ./bin/epm update
- ./bin/epm -y install git rsync
script:
- echo "Publishing logs and IPFS DB"
- ls -R ipfs
- echo "IPFS files $(find ipfs -type f | wc -l)"
- du -sh ipfs || true
- bash ./ci/push-ipfs-db.sh
artifacts:
when: always
......
......@@ -65,7 +65,7 @@ tests()
fi
cat <<EOF
test_${safe_app}_${safe_system}:
${safe_app}_${safe_system}_test:
<<: [*${template_anchor}, *${anchor}]
image: ${system}
EOF
......
......@@ -24,10 +24,10 @@ RESULTS_DIR="experiments"
RESULTS_LABEL="custom"
if [ -n "$FULL_TEST" ]; then
systems="alt:sisyphus debian:bookworm"
systems="alt:sisyphus debian:bookworm fedora:latest"
USE_DOWNLOAD=1
USE_IPFS=1
USE_IPFS_UPDATE=1
USE_IPFS_UPDATE=0
CI_APPS=""
RESULTS_DIR="epm-results"
RESULTS_LABEL="full-test"
......@@ -67,7 +67,7 @@ if [ -n "${CI_USE_IPFS:-}" ] || [ "$USE_DOWNLOAD" -eq 1 ]; then
USE_IPFS=1
fi
if [ -n "${CI_IPFS_UPDATE:-}" ]; then
if [ -n "${CI_IPFS_UPDATE:-}" ] && [ -z "$FULL_TEST" ]; then
USE_IPFS_UPDATE=1
USE_IPFS=1
fi
......
......@@ -31,10 +31,22 @@ cd "$REPO_ROOT/bin"
# IPFS
PLAY_OPTS="--latest"
SPLIT_DOWNLOAD_MODE=0
IPFS_UPDATE_ENABLED=0
if [ -n "${CI_USE_IPFS:-}" ] && [ -f "$PROJECT_DIR/ipfs/eget-ipfs-db.txt" ]; then
PLAY_OPTS=""
SPLIT_DOWNLOAD_MODE=1
fi
if [ -n "${CI_USE_IPFS:-}" ] && [ -n "${CI_IPFS_UPDATE:-}" ] && [ "$SPLIT_DOWNLOAD_MODE" -eq 0 ]; then
IPFS_UPDATE_ENABLED=1
fi
if [ -n "${CI_USE_IPFS:-}" ]; then
PLAY_OPTS="$PLAY_OPTS --ipfs"
if [ -n "${CI_IPFS_UPDATE:-}" ]; then
if [ "$IPFS_UPDATE_ENABLED" -eq 1 ]; then
export EGET_IPFS_FORCE_LOAD=1
export EGET_IPFS_API=/ip4/91.232.225.49/tcp/5001
......@@ -51,7 +63,7 @@ fi
IPFS_DB_CAPTURE=0
EGET_DB_PATH="/var/lib/eepm/eget-ipfs-db.txt"
PRE_DB_SNAPSHOT=""
if [ -n "${CI_USE_IPFS:-}" ] && [ -n "${CI_IPFS_UPDATE:-}" ]; then
if [ "$IPFS_UPDATE_ENABLED" -eq 1 ]; then
IPFS_DB_CAPTURE=1
mkdir -p "$IPFS_PARTS_DIR"
if [ -f "$EGET_DB_PATH" ]; then
......
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