From 31b48cb92fca43849ce188f70beddd5dd6f6e74b Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Fri, 21 Jan 2022 22:02:20 +0100 Subject: [PATCH] sh: Add build queue --- micobu.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/micobu.sh b/micobu.sh index 3cc30d9..abc077b 100755 --- a/micobu.sh +++ b/micobu.sh @@ -10,6 +10,7 @@ ARTEFACT_BASE='/opt/micobu/rootfs/home/builduser/artefacts' BUILD_TIMEOUT='600' API_KEY='mykey' SERVER_PIPE='/var/tmp/micobu_pipe' +SERVER_LOCK='/var/tmp/micobu.lock' BUILD_BASE=$ROOTFS_BASE$ROOTFS_DIR @@ -102,12 +103,27 @@ function build_s() shift echo Starting build of $@ build $@ + rm "$SERVER_LOCK" + echo "" > $SERVER_PIPE } set -e +rm -f "$SERVER_LOCK" + [ ! -p "$SERVER_PIPE" ] && mkfifo "$SERVER_PIPE" +a=() while true; do - args=`cat $SERVER_PIPE | sed -n 's/\([a-zA-Z0-9]\+\) \([a-zA-Z0-9]\+\) \([a-zA-Z0-9:\-_\/\.]\+\) \([a-z0-9]\+\)/\1 \2 \3 \4/p'` - build_s $args + line=`head -n 1 $SERVER_PIPE | sed -n 's/\([a-zA-Z0-9]\+\) \([a-zA-Z0-9]\+\) \([a-zA-Z0-9:\-_\/\.]\+\) \([a-z0-9]\+\)/\1 \2 \3 \4/p'` + if [ "$line" != "" ]; then + a=("${a[@]}" "$line") + fi + if [ "$a" != "" ]; then + if [ ! -f "$SERVER_LOCK" ]; then + echo "Starting build: $a" + touch "$SERVER_LOCK" + build_s $a & + a=("${a[@]:1}") + fi + fi done