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 | |
parent | Remove guix/channels.scm (diff) | |
download | server-d9aef665013e202ab4dac844e9dcd029a43f4222.tar.gz server-d9aef665013e202ab4dac844e9dcd029a43f4222.tar.xz |
Move scripts/ to build-aux/
-rw-r--r-- | Makefile | 8 | ||||
-rwxr-xr-x | build-aux/assert-shellcheck.sh | 5 | ||||
-rwxr-xr-x | build-aux/assert-terraform.sh (renamed from scripts/assert-terraform.sh) | 0 | ||||
-rwxr-xr-x | build-aux/ci/ci-build.sh | 43 | ||||
-rwxr-xr-x | build-aux/ci/git-post-receive.sh | 13 | ||||
-rw-r--r-- | build-aux/ci/git-pre-push.sh.in | 18 | ||||
-rwxr-xr-x | scripts/assert-shellcheck.sh | 6 | ||||
-rwxr-xr-x | scripts/assert-todos.sh | 42 | ||||
-rwxr-xr-x | scripts/ci-build.sh | 40 | ||||
-rwxr-xr-x | scripts/generate-tasks-and-bugs.sh | 24 | ||||
-rwxr-xr-x | scripts/with-container.sh | 3 |
11 files changed, 83 insertions, 119 deletions
@@ -1,8 +1,8 @@ .PHONY: check check: - bash scripts/assert-shellcheck.sh - bash scripts/assert-todos.sh - bash scripts/assert-terraform.sh + ./build-aux/assert-shellcheck.sh + # ./build-aux/assert-todos.sh + ./build-aux/assert-terraform.sh .PHONY: clean clean: @@ -10,5 +10,5 @@ clean: .PHONY: public public: - bash ./scripts/generate-tasks-and-bugs.sh + ./build-aux/generate-tasks-and-bugs.sh pandoc -s --metadata title='VPS - EuAndreh' -c styles.css -o public/index.html README.md diff --git a/build-aux/assert-shellcheck.sh b/build-aux/assert-shellcheck.sh new file mode 100755 index 0000000..d07815b --- /dev/null +++ b/build-aux/assert-shellcheck.sh @@ -0,0 +1,5 @@ +#!/bin/sh -eux + +git ls-files -z | \ + xargs -0 awk 'FNR==1 && /^#!\/bin\/sh/ { print FILENAME }' | \ + xargs shellcheck diff --git a/scripts/assert-terraform.sh b/build-aux/assert-terraform.sh index 8f03d7f..8f03d7f 100755 --- a/scripts/assert-terraform.sh +++ b/build-aux/assert-terraform.sh 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 diff --git a/build-aux/ci/git-post-receive.sh b/build-aux/ci/git-post-receive.sh new file mode 100755 index 0000000..c78f1ac --- /dev/null +++ b/build-aux/ci/git-post-receive.sh @@ -0,0 +1,13 @@ +#!/bin/sh -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/build-aux/ci/git-pre-push.sh.in b/build-aux/ci/git-pre-push.sh.in new file mode 100644 index 0000000..37e777c --- /dev/null +++ b/build-aux/ci/git-pre-push.sh.in @@ -0,0 +1,18 @@ +#!/bin/sh -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.@TLD@:$REMOTE_GIT_DIR/description" +ssh git.@TLD@ mkdir -p "$LOGS_DIR" +scp build-aux/ci/ci-build.sh "git.@TLD@:$(dirname "$LOGS_DIR")/ci-build.sh" +scp build-aux/ci/git-post-receive.sh "git.@TLD@:$REMOTE_GIT_DIR/hooks/post-receive" diff --git a/scripts/assert-shellcheck.sh b/scripts/assert-shellcheck.sh deleted file mode 100755 index e24c29c..0000000 --- a/scripts/assert-shellcheck.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail -cd "$(dirname "${BASH_SOURCE[0]}")" -cd ../ - -git ls-files | grep '\.sh$' | xargs shellcheck diff --git a/scripts/assert-todos.sh b/scripts/assert-todos.sh deleted file mode 100755 index a9c5ef9..0000000 --- a/scripts/assert-todos.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail -cd "$(dirname "${BASH_SOURCE[0]}")" -cd ../ - -if git grep FIXME | grep -v '^TODOs.org' | grep -v '^scripts/assert-todos.sh'; then - echo "Found dangling FIXME markers on the project." - echo "You should write them down properly on TODOs.org." - exit 1 -fi - -contains-element() { - local e match="$1" - shift - for e; do [[ "$e" == "$match" ]] && return 0; done - return 1 -} - -KNOWN_IDS=() -has_error=0 -# shellcheck disable=2013 -for todo in $(sed -e '/^\* Tasks$/,/^\* Improvements$/!d' TODOs.org | grep -nE '^\*\* .*$' | cut -d: -f1); do - if grep -E '^\*\* (CANCELLED|DONE)' <(sed "${todo}q;d" TODOs.org) > /dev/null; then - ID_OFFSET=3 - else - ID_OFFSET=2 - fi - ID="$(sed "$((todo+ID_OFFSET))q;d" TODOs.org)" - if grep '^:CUSTOM_ID: .*$' <(echo "$ID") > /dev/null; then - if contains-element "$ID" "${KNOWN_IDS[@]}"; then - echo "Duplicated ID: $ID" - has_error=1 - else - KNOWN_IDS+=("$ID") - fi - else - echo "Missing ID for TODO in line $todo" - has_error=1 - fi -done - -exit "$has_error" diff --git a/scripts/ci-build.sh b/scripts/ci-build.sh deleted file mode 100755 index f9602a1..0000000 --- a/scripts/ci-build.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail -set -x - -PREFIX="$LOGS_PREFIX/vps" -mkdir -p "$PREFIX" -read -r _ SHA _ # oldrev newrev refname -FILENAME="$(date -Is)-$SHA.log" -LOGFILE="$PREFIX/$FILENAME" -exec &> >(tee -a "$LOGFILE") - -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)" - popd - 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." -} -trap finish EXIT - -unset GIT_DIR -CLONE="$(mktemp -d)" -git clone . "$CLONE" -pushd "$CLONE" -git config --global user.email git@euandre.org -git config --global user.name 'EuAndreh CI' - -./scripts/with-container.sh 'make clean check public' -rm -rf /srv/http/vps/ && mv public/ /srv/http/vps/ diff --git a/scripts/generate-tasks-and-bugs.sh b/scripts/generate-tasks-and-bugs.sh deleted file mode 100755 index cbbce29..0000000 --- a/scripts/generate-tasks-and-bugs.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail -cd "$(dirname "${BASH_SOURCE[0]}")" -cd ../ - -mkdir -p public - -cat workflow/vendor/org.css workflow/workflow.css > public/styles.css - -sed -e '/^\* Tasks$/,/^\* Improvements$/!d' TODOs.org | \ - head -n -1 | \ - cat workflow/preamble.org - > tasks-and-bugs.org - -emacs tasks-and-bugs.org \ - -l workflow/vendor/htmlize.el \ - --eval '(setq org-export-allow-bind-keywords t)' \ - -f org-html-export-to-html \ - --batch \ - --kill - -# Add anchor link to bug headers -perl -pe \ - 's|^<h3 id="(.*?)">(.*)</h3>$|<h3 id="\1">\2<br /><a class="header-anchor" href="#\1">#\1</a></h3>|' \ - tasks-and-bugs.html > public/tasks-and-bugs.html diff --git a/scripts/with-container.sh b/scripts/with-container.sh deleted file mode 100755 index 1261022..0000000 --- a/scripts/with-container.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -guix time-machine -C guix/channels.scm -- environment --pure -C -m guix/manifest.scm -- sh -c "$@" |