From 451eed829916627e9248f1003752b43617a20ff4 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Wed, 27 Jan 2021 15:55:27 -0300 Subject: mv build-aux/ -> aux/ and scripts/ --- aux/ci/ci-build.sh | 53 ++++++++++++++++++++++++++++++++++++++++++++++ aux/ci/git-post-receive.sh | 14 ++++++++++++ aux/ci/git-pre-push.sh | 19 +++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100755 aux/ci/ci-build.sh create mode 100755 aux/ci/git-post-receive.sh create mode 100755 aux/ci/git-pre-push.sh (limited to 'aux/ci') diff --git a/aux/ci/ci-build.sh b/aux/ci/ci-build.sh new file mode 100755 index 0000000..c891d3b --- /dev/null +++ b/aux/ci/ci-build.sh @@ -0,0 +1,53 @@ +#!/bin/sh +set -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 <>>\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 aux/guix/with-container.sh ]; then + RUNNER='./aux/guix/with-container.sh' + else + RUNNER='sh -c' + fi + + if [ -f ./bootstrap ]; then + COMMAND='./bootstrap && ./configure --enable-programmer-mode --enable-ci-mode && make clean all check distcheck public' + else + COMMAND='make clean check public' + fi + + $RUNNER "$COMMAND" + + rsync -avzzP public/ "/srv/http/$PACKAGE/" --delete +} | tee "$LOGFILE" 2>&1 diff --git a/aux/ci/git-post-receive.sh b/aux/ci/git-post-receive.sh new file mode 100755 index 0000000..2f6e3c0 --- /dev/null +++ b/aux/ci/git-post-receive.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -eu + +for n in $(seq 0 $((GIT_PUSH_OPTION_COUNT - 1))); do + opt="$(eval "echo \$GIT_PUSH_OPTION_$n")" + if [ "$opt" = skip-ci ] || [ "$opt" = ci-skip ]; then + printf "\n'%s' option detected, not running ci-build.sh\n\n" "$opt" + exit 0 + fi +done + +PACKAGE="$(basename "$PWD" | cut -d. -f1)" # remove .git suffix +LOGS_DIR="/data/ci/$PACKAGE/logs" +"/data/ci/$PACKAGE/ci-build.sh" "$PACKAGE" "$LOGS_DIR" diff --git a/aux/ci/git-pre-push.sh b/aux/ci/git-pre-push.sh new file mode 100755 index 0000000..30d2850 --- /dev/null +++ b/aux/ci/git-pre-push.sh @@ -0,0 +1,19 @@ +#!/bin/sh +set -eux + +PACKAGE="$(basename "$PWD")" +LOGS_DIR="/data/ci/$PACKAGE/logs" +REMOTE_GIT_DIR="/data/git/$PACKAGE.git" + +DESCRIPTION="$(mktemp)" +if [ -f description ] +then + cp description "$DESCRIPTION" +else + git config euandreh.description > "$DESCRIPTION" +fi + +scp "$DESCRIPTION" "git.euandreh.xyz:$REMOTE_GIT_DIR/description" +ssh git.euandreh.xyz mkdir -p "$LOGS_DIR" +scp aux/ci/ci-build.sh "git.euandreh.xyz:$(dirname "$LOGS_DIR")/ci-build.sh" +scp aux/ci/git-post-receive.sh "git.euandreh.xyz:$REMOTE_GIT_DIR/hooks/post-receive" -- cgit v1.2.3