diff options
author | Christopher Baines <mail@cbaines.net> | 2020-04-16 21:42:26 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-04-16 21:42:26 +0100 |
commit | 6ddf31cfbb963faa61f078538e5890d6cb656467 (patch) | |
tree | f849e8f8fe81a30b73c663321bd748b266e0a2a1 /scripts/guix-build-coordinator.in | |
parent | e89225ea04c03020c03b0d3b20ddc201e593f8db (diff) | |
download | build-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.in | 26 |
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))))) |