blob: 8d49779a6fc28667588786a7237bc92f81387be5 (
plain) (
tree)
|
|
#!/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/ "/opt/www/$TLD/static/$PROJECT/"
tar \
-C "/opt/www/$TLD/git/repos" \
-c \
-f "/opt/www/$TLD/static/$PROJECT/repo.tar.gz" \
"$PROJECT".git
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 dev-check'
} 2>&1 | tee "$LOGFILE"
|