feat(ci-reports): publish report.tar.gz archive for offline download

Pack HTML report after publish; link archive in run index and CI log.
Add fetch-ci-report.sh helper for agent curl/extract.

[skip ci]
This commit is contained in:
2026-07-28 13:52:01 +03:00
parent 85a34dd7b0
commit 3c2c33f83b
3 changed files with 52 additions and 1 deletions
+7
View File
@@ -5,6 +5,13 @@ server {
autoindex on;
charset utf-8;
# Archives for curl/agent offline analysis (before Allure SPA fallback)
location ~* \.(tar\.gz|tgz|zip)$ {
default_type application/gzip;
add_header Content-Disposition 'attachment';
try_files $uri =404;
}
location / {
try_files $uri $uri/ =404;
}
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Download CI report archive from ci-reports server and extract for agent/offline analysis.
# Usage: fetch-ci-report.sh <report.tar.gz URL> [out_dir]
# Example:
# bash scripts/fetch-ci-report.sh \
# 'https://ci-reports.ift.eventhub.local/EventHubFront/40/allure-ift/report.tar.gz' \
# ./.tmp-ci-report
set -euo pipefail
URL="${1:?report.tar.gz URL}"
OUT="${2:-./ci-report-archive}"
CURL=(curl -fsSL)
if [[ "${CI_REPORTS_INSECURE:-}" == "1" ]]; then
CURL+=( -k )
fi
mkdir -p "${OUT}"
ARCHIVE="${OUT}/report.tar.gz"
"${CURL[@]}" "${URL}" -o "${ARCHIVE}"
rm -rf "${OUT}/contents"
mkdir -p "${OUT}/contents"
tar -xzf "${ARCHIVE}" -C "${OUT}/contents"
echo "Archive: ${ARCHIVE}"
echo "Extracted: ${OUT}/contents"
echo "Allure index (if present): ${OUT}/contents/index.html"
+19
View File
@@ -92,6 +92,16 @@ rm -rf "${DEST}"
mkdir -p "${DEST}"
cp -a "${SRC}/." "${DEST}/"
create_report_archive() {
local dest="$1"
local archive="${dest}/report.tar.gz"
local tmp
tmp="$(mktemp)"
tar -czf "${tmp}" -C "${dest}" .
mv -f "${tmp}" "${archive}"
}
create_report_archive "${DEST}"
# Convenience: CT puts index under ct_run.*; expose DEST/index.html
if [[ ! -f "${DEST}/index.html" ]]; then
CT_INDEX="$(find "${DEST}" -type f -name index.html 2>/dev/null | head -n 1 || true)"
@@ -123,7 +133,13 @@ INDEX="${REPORTS_DIR}/${REPO}/${RUN_ID}/index.html"
[[ -d "${d}" ]] || continue
name="$(basename "${d}")"
if [[ -f "${d}index.html" ]]; then
if [[ -f "${d}report.tar.gz" ]]; then
echo "<li><a href=\"./${name}/index.html\">${name}</a> — <a href=\"./${name}/report.tar.gz\">report.tar.gz</a></li>"
else
echo "<li><a href=\"./${name}/index.html\">${name}</a></li>"
fi
elif [[ -f "${d}report.tar.gz" ]]; then
echo "<li><a href=\"./${name}/\">${name}/</a> — <a href=\"./${name}/report.tar.gz\">report.tar.gz</a></li>"
else
echo "<li><a href=\"./${name}/\">${name}/</a></li>"
fi
@@ -132,15 +148,18 @@ INDEX="${REPORTS_DIR}/${REPO}/${RUN_ID}/index.html"
} > "${INDEX}"
URL="${BASE_URL}/${REPO}/${RUN_ID}/${KIND}/"
ARCHIVE_URL="${BASE_URL}/${REPO}/${RUN_ID}/${KIND}/report.tar.gz"
INDEX_URL="${BASE_URL}/${REPO}/${RUN_ID}/"
echo "Report stand: ${STAND}"
echo "Report: ${URL}"
echo "Report archive: ${ARCHIVE_URL}"
echo "Report index: ${INDEX_URL}"
echo "Report path: ${DEST}"
if [[ -n "${GITHUB_STEP_SUMMARY:-}" ]]; then
{
echo "### Test report"
echo "- [${KIND}](${URL})"
echo "- [${KIND} archive](${ARCHIVE_URL})"
echo "- [index](${INDEX_URL})"
} >> "${GITHUB_STEP_SUMMARY}"
fi