diff options
author | EuAndreh <eu@euandre.org> | 2021-01-10 10:31:28 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-01-10 10:32:56 -0300 |
commit | d9aef665013e202ab4dac844e9dcd029a43f4222 (patch) | |
tree | 7e15e975ec093470d9f00ac8a40c84daeb482128 /build-aux/ci/ci-build.sh | |
parent | Remove guix/channels.scm (diff) | |
download | server-d9aef665013e202ab4dac844e9dcd029a43f4222.tar.gz server-d9aef665013e202ab4dac844e9dcd029a43f4222.tar.xz |
Move scripts/ to build-aux/
Diffstat (limited to 'build-aux/ci/ci-build.sh')
-rwxr-xr-x | build-aux/ci/ci-build.sh | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/build-aux/ci/ci-build.sh b/build-aux/ci/ci-build.sh new file mode 100755 index 0000000..62e0f22 --- /dev/null +++ b/build-aux/ci/ci-build.sh @@ -0,0 +1,43 @@ +#!/bin/sh -eux + +PACKAGE="$1" +LOGS_DIR="$2" +read -r _ SHA _ # oldrev newrev refname +FILENAME="$(date -Is)-$SHA.log" +LOGFILE="$LOGS_DIR/$FILENAME" + +{ + 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" + 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" + git config --global user.email git@euandre.org + git config --global user.name 'EuAndreh CI' + + if [ -f ./bootstrap ]; then + ./build-aux/with-container.sh './bootstrap && ./configure --enable-programmer-mode --enable-ci-mode && make clean all check distcheck public' + else + ./build-aux/with-container.sh 'make clean check public' + fi + rsync -avzzP public/ "/srv/http/$PACKAGE/" --delete +} | tee "$LOGFILE" 2>&1 |