aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xaux/ci/ci-build.sh16
-rwxr-xr-xaux/ci/report.sh69
-rw-r--r--aux/workflow/preamble.md2
3 files changed, 82 insertions, 5 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
diff --git a/aux/workflow/preamble.md b/aux/workflow/preamble.md
index c6ae56e..7413f58 100644
--- a/aux/workflow/preamble.md
+++ b/aux/workflow/preamble.md
@@ -2,7 +2,7 @@
TODOs for $PROJECT_UC.
-See also [$PROJECT.euandreh.xyz](https://$PROJECT.euandreh.xyz/).
+See also [$PROJECT.euandreh.xyz](https://$PROJECT.euandreh.xyz/) and [CI logs](https://$PROJECT.euandreh.xyz/ci.html).
Register a new one at
[~euandreh/$MAILING_LIST@lists.sr.ht](mailto:~euandreh/$MAILING_LIST@lists.sr.ht?subject=%5B$PROJECT%5D%20BUG%20or%20TASK%3A%20%3Cdescription%3E)