aboutsummaryrefslogtreecommitdiff
path: root/aux/ci/ci-build.sh
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2022-01-18 11:40:47 -0300
committerEuAndreh <eu@euandre.org>2022-01-18 14:02:59 -0300
commit47bfd2ed8c3219e79f8974a8fc2ac9265ed91bd2 (patch)
tree3d162596d874b4f775da12c843ad3918b593f713 /aux/ci/ci-build.sh
parentInitial empty commit (diff)
downloadtd-47bfd2ed8c3219e79f8974a8fc2ac9265ed91bd2.tar.gz
td-47bfd2ed8c3219e79f8974a8fc2ac9265ed91bd2.tar.xz
First commit, now with a clean history
Diffstat (limited to 'aux/ci/ci-build.sh')
-rwxr-xr-xaux/ci/ci-build.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/aux/ci/ci-build.sh b/aux/ci/ci-build.sh
new file mode 100755
index 0000000..34233b7
--- /dev/null
+++ b/aux/ci/ci-build.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+set -eux
+
+PROJECT="$1"
+LOGS_DIR="$2"
+SHA="$3"
+FILENAME="$(date -Is)-$SHA.log"
+LOGFILE="$LOGS_DIR/$FILENAME"
+
+mkdtemp() {
+ name="$(echo 'mkstemp(template)' |
+ m4 -D template="${TMPDIR:-/tmp}/m4-tmpname.")"
+ rm -f "$name"
+ mkdir "$name"
+ echo "$name"
+}
+
+{
+ echo "Starting CI job at: $(date -Is)"
+
+ finish() {
+ STATUS="$?"
+ printf "\n\n>>> exit status was %s\n" "$STATUS"
+ echo "Finishing CI job at: $(date -Is)"
+ cd -
+ NOTE=$(cat <<EOF
+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 -
+ git fetch origin refs/notes/*:refs/notes/*
+ sh aux/ci/report.sh -n "$PROJECT" -o public
+ rsync -av public/ "/srv/http/$PROJECT/" --delete
+
+ printf '\n>>>\n>>> CI logs added as Git note.\n>>>\n>>> Run status was %s\n>>>\n\n' \
+ "$STATUS"
+ }
+ trap finish EXIT
+
+ unset GIT_DIR
+ REMOTE="$PWD"
+ cd "$(mkdtemp)"
+ git clone "$REMOTE" .
+ git config --global user.email git@euandre.org
+ git config --global user.name 'EuAndreh CI'
+
+ if [ -e aux/with-container ]; then
+ RUNNER='sh aux/with-container'
+ else
+ RUNNER='sh -c'
+ fi
+
+ $RUNNER 'make clean public dev-check'
+} 2>&1 | tee "$LOGFILE"