aboutsummaryrefslogtreecommitdiff
path: root/scripts/guix-build-coordinator.in
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-04-16 21:42:26 +0100
committerChristopher Baines <mail@cbaines.net>2020-04-16 21:42:26 +0100
commit6ddf31cfbb963faa61f078538e5890d6cb656467 (patch)
treef849e8f8fe81a30b73c663321bd748b266e0a2a1 /scripts/guix-build-coordinator.in
parente89225ea04c03020c03b0d3b20ddc201e593f8db (diff)
downloadbuild-coordinator-6ddf31cfbb963faa61f078538e5890d6cb656467.tar
build-coordinator-6ddf31cfbb963faa61f078538e5890d6cb656467.tar.gz
Implement a couple of basic hooks
This allows configurable code to be executed when builds succeed or fail.
Diffstat (limited to 'scripts/guix-build-coordinator.in')
-rw-r--r--scripts/guix-build-coordinator.in26
1 files changed, 22 insertions, 4 deletions
diff --git a/scripts/guix-build-coordinator.in b/scripts/guix-build-coordinator.in
index bfc17d4..458b693 100644
--- a/scripts/guix-build-coordinator.in
+++ b/scripts/guix-build-coordinator.in
@@ -25,6 +25,8 @@
(use-modules (srfi srfi-1)
(srfi srfi-37)
(ice-9 match)
+ ((guix ui) #:select (read/eval))
+ (guix-build-coordinator hooks)
(guix-build-coordinator config)
(guix-build-coordinator datastore)
(guix-build-coordinator coordinator)
@@ -77,12 +79,24 @@
(lambda (opt name arg result)
(alist-cons 'host
arg
- (alist-delete 'host result))))))
+ (alist-delete 'host result))))
+ (option '("build-success-hook") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'build-success-hook
+ (read/eval arg)
+ (alist-delete 'build-success-hook result))))
+ (option '("build-failure-hook") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'build-failure-hook
+ (read/eval arg)
+ (alist-delete 'build-failure-hook result))))))
(define %service-option-defaults
;; Alist of default option values
`((port . 8745)
- (host . "0.0.0.0")))
+ (host . "0.0.0.0")
+ (build-success-hook . ,default-build-success-hook)
+ (build-failure-hook . ,default-build-failure-hook)))
(define %agent-options
(list (option '("uuid") #t #f
@@ -162,7 +176,10 @@
%base-option-defaults)
arguments))
(datastore (database-uri->datastore
- (assq-ref opts 'database))))
+ (assq-ref opts 'database)))
+ (hooks
+ `((build-success . ,(assq-ref opts 'build-success-hook))
+ (build-failure . ,(assq-ref opts 'build-failure-hook)))))
(when (assoc-ref opts 'update-database)
(datastore-update datastore))
@@ -183,4 +200,5 @@
(assq-ref opts 'port)
(assq-ref opts 'host)
(assq-ref opts 'secret-key-base)
- datastore)))))
+ datastore
+ hooks)))))