]> git.donarmstrong.com Git - wannabuild.git/commitdiff
triggers: switch to a signal-based infrastructure
authorPhilipp Kern <pkern@debian.org>
Fri, 25 Mar 2011 13:40:14 +0000 (13:40 +0000)
committerPhilipp Kern <pkern@debian.org>
Fri, 25 Mar 2011 13:40:14 +0000 (13:40 +0000)
bin/process-triggers [new file with mode: 0755]
bin/trigger-wrapper
triggers/trigger.backports
triggers/trigger.debian
triggers/trigger.debian-buildd
triggers/trigger.edu
triggers/trigger.volatile

diff --git a/bin/process-triggers b/bin/process-triggers
new file mode 100755 (executable)
index 0000000..7bae80e
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+# vim:set et ts=4 sw=4:
+
+LOCKFILE=/org/wanna-build/triggers/lock
+
+set -eE
+
+cleanup() {
+    rm -rf "$LOCKFILE"
+}
+
+if ! lockfile -0 -r0 "$LOCKFILE" 2>/dev/null
+then
+    # Process already running.
+    exit 0
+fi
+
+# Got the lock.
+trap cleanup ERR TERM HUP INT QUIT EXIT
+
+# Do at least one run.
+work=1
+while [ $work -eq 1 ]
+do
+    # No further runs unless at least one signal is found.
+    work=0
+    find /org/wanna-build/signals -type f | while read signal
+    do
+        # Process it.
+        work=1
+        if [ "$(stat -c '%s' $signal)" -eq 0 ]
+        then
+            /org/wanna-build/triggers/trigger.$(basename $signal)
+        else
+            cat $signal | \
+                (while read args
+                 do
+                     /org/wanna-build/triggers/trigger.$(basename $signal) $args
+                 done)
+        fi
+        rm $signal
+    done
+done
+
+exit 0
+
index 4c8a7b253c8b07c549b4bf7661d91847bbad9639..5208c22072b4a896e5ecfe06b4e4c775edb92cac 100755 (executable)
@@ -2,21 +2,23 @@
 
 [ -n "$SSH_ORIGINAL_COMMAND" ] || exit 1
 
+trigger_name=$(basename "$1")
+
 set -- $SSH_ORIGINAL_COMMAND
 
-bn=$(basename "$1")
-if [ "$bn" = "trigger.daily" ]; then
-       bin=/org/wanna-build/trigger.daily
-elif [ "$bn" = "trigger.often" ]; then
-       bin=/org/wanna-build/trigger.often
-elif [ "$bn" = "trigger.security" ]; then
-       bin=/org/wanna-build/trigger.security
+shift
+args="$*"
+
+echo "$(date): $trigger_name | $args" >> /org/wanna-build/db/signal.log
+
+if [ ! -z "$args" ]
+then
+    # Append because we might get triggered for multiple suites.
+    # (This is mainly for security currently.)
+    echo $args >> /org/wanna-build/signals/$trigger_name
 else
-       exit 1
+    touch /org/wanna-build/signals/$trigger_name
 fi
 
-shift
-
-[ -f "$bin" -a -x "$bin" ] || exit 1
+exit 0
 
-exec $bin
index 58d20f574f79867dd19a1befe9f45925c0a3c20c..a90627ccd900e44ed58d59eb2434b7fe5b136158 100755 (executable)
@@ -59,6 +59,6 @@ main() {
     cleanup
 }
 
-main &
+main
 exit 0
 
index 88c24fd924980b1528f1e788c8c97e411bf24d58..f8e1d447027ad4ddc5b6a7135a12180dcc7d1c5f 100755 (executable)
@@ -86,6 +86,6 @@ main() {
     do_stats
 }
 
-main &
+main
 exit 0
 
index 0bee1705ace15c16b398a58806e3976f37597a4b..dacaad0d1d1b4c70870766e666e8a59b4fab9806 100755 (executable)
@@ -52,6 +52,6 @@ main() {
     cleanup
 }
 
-main &
+main
 exit 0
 
index 654b177361197b2894ce752b7d510a43c6b6e49a..4ff8861b1d83ab28390ba8c02336eb144587af3d 100755 (executable)
@@ -41,6 +41,6 @@ main() {
     cleanup
 }
 
-main &
+main
 exit 0
 
index a4e874e0f60d0de623d8a3469233c622047e17a9..2ee4928064ffd9c1ab3acdacf2e784a3771693aa 100755 (executable)
@@ -46,6 +46,6 @@ main() {
     cleanup
 }
 
-main &
+main
 exit 0