aboutsummaryrefslogtreecommitdiff
path: root/aux/ci
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-02-18 17:24:10 -0300
committerEuAndreh <eu@euandre.org>2021-02-18 17:24:10 -0300
commitcef741faa605fffb28e505fc8f915cca5c16ca6d (patch)
tree81b6fae7c0e681d3bb36e09bb4accb0fcb1c7bd4 /aux/ci
parentManually add fallible define-public definition (diff)
downloadpackage-repository-cef741faa605fffb28e505fc8f915cca5c16ca6d.tar.gz
package-repository-cef741faa605fffb28e505fc8f915cca5c16ca6d.tar.xz
Add aux/ci/report.sh
Diffstat (limited to 'aux/ci')
-rwxr-xr-xaux/ci/ci-build.sh16
-rwxr-xr-xaux/ci/report.sh69
2 files changed, 81 insertions, 4 deletions
diff --git a/aux/ci/ci-build.sh b/aux/ci/ci-build.sh
index acbc394..1159204 100755
--- a/aux/ci/ci-build.sh
+++ b/aux/ci/ci-build.sh
@@ -20,20 +20,28 @@ See CI logs with:
git notes --ref=refs/notes/ci-logs show $SHA
git notes --ref=refs/notes/ci-data show $SHA
EOF
- )
+)
git notes --ref=refs/notes/ci-data add -f -m "$STATUS $FILENAME"
git notes --ref=refs/notes/ci-logs add -f -F "$LOGFILE"
git notes append -m "$NOTE"
+
+ cd -
+ if [ -f ./aux/ci/report.sh ]; then
+ sh aux/ci/report.sh "$PACKAGE"
+ rsync -avzzP public/ "/srv/http/$PACKAGE/" --delete
+ fi
+
printf "\n>>>\n>>> CI logs added as Git note.\n>>>\n>>> Run status was %s" "$STATUS"
}
trap finish EXIT
unset GIT_DIR
- CLONE="$(mktemp -d)"
- git clone . "$CLONE"
- cd "$CLONE"
+ REMOTE="$PWD"
+ cd "$(mktemp -d)"
+ git clone "$REMOTE" .
git config --global user.email git@euandre.org
git config --global user.name 'EuAndreh CI'
+ git fetch origin refs/notes/*:refs/notes/*
if [ -f aux/guix/with-container.sh ]; then
RUNNER='./aux/guix/with-container.sh'
diff --git a/aux/ci/report.sh b/aux/ci/report.sh
new file mode 100755
index 0000000..b82c061
--- /dev/null
+++ b/aux/ci/report.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+set -eu
+
+PROJECT_UC="$1"
+
+PASS='✅'
+FAIL='❌'
+
+mkdir -p public/ci-logs public/ci-data
+
+OUT="$(mktemp)"
+chmod 644 "$OUT"
+
+git fetch origin refs/notes/*:refs/notes/* ||:
+
+for c in $(git notes list | cut -d\ -f2); do
+ DATA="$(git notes --ref=refs/notes/ci-data show "$c")"
+ FILENAME="$(echo "$DATA" | cut -d\ -f2)"
+ echo "$DATA" > "public/ci-data/$FILENAME"
+ git notes --ref=refs/notes/ci-logs show "$c" > "public/ci-logs/$FILENAME"
+done
+
+cat <<EOF >> "$OUT"
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <style>
+ pre {
+ display: inline;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>
+ CI logs for $PROJECT_UC
+ </h1>
+ <ul>
+EOF
+
+for f in $(find public/ci-data/ -type f | LANG=C.UTF-8 sort -r); do
+ DATA="$(cat "$f")"
+ STATUS="$(echo "$DATA" | cut -d\ -f1)"
+ FILENAME="$(echo "$DATA" | cut -d\ -f2)"
+
+ if [ "$STATUS" = 0 ]; then
+ STATUS_MARKER="$PASS"
+ else
+ STATUS_MARKER="$FAIL"
+ fi
+
+ cat <<EOF >> "$OUT"
+ <li>
+ <a href="ci-logs/$FILENAME">
+ $STATUS_MARKER <pre>$FILENAME</pre>
+ </a>
+ </li>
+EOF
+done
+
+cat <<EOF >> "$OUT"
+ </ul>
+ </body>
+</html>
+EOF
+
+mv "$OUT" public/ci.html