aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-06-28 12:41:03 +0100
committerChristopher Baines <mail@cbaines.net>2020-07-01 17:43:38 +0100
commit3423a03688e4a03c7f83849c113aa6b6c58ed945 (patch)
tree398325cf619e6b523500b067878df5ee8c3ebbe8
parent00fe8e02d222b3ff7dac141a7938418ba8d60bb3 (diff)
downloadbuild-coordinator-3423a03688e4a03c7f83849c113aa6b6c58ed945.tar
build-coordinator-3423a03688e4a03c7f83849c113aa6b6c58ed945.tar.gz
Add a hook for when builds are submitted
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm7
-rw-r--r--guix-build-coordinator/hooks.scm8
-rw-r--r--scripts/guix-build-coordinator.in9
3 files changed, 22 insertions, 2 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index a5c50e4..4251f75 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -455,10 +455,17 @@ INSERT INTO build_tags (build_id, tag_id) VALUES (:build_id, :tag_id)"
(sqlite-step build-tags-statement)))
tags)))
+ (define (handle-inserting-unprocessed-hook-event db build-id)
+ (insert-unprocessed-hook-event
+ db
+ "build-submitted"
+ (list build-id)))
+
(datastore-call-with-transaction
datastore
(lambda (db)
(insert-build db uuid derivation-name priority)
+ (handle-inserting-unprocessed-hook-event db uuid)
(unless (null? tags)
(insert-tags db uuid tags))))
#t)
diff --git a/guix-build-coordinator/hooks.scm b/guix-build-coordinator/hooks.scm
index 9868d37..0491df6 100644
--- a/guix-build-coordinator/hooks.scm
+++ b/guix-build-coordinator/hooks.scm
@@ -29,13 +29,19 @@
#:use-module (guix-build-coordinator utils)
#:use-module (guix-build-coordinator datastore)
#:use-module (guix-build-coordinator coordinator)
- #:export (default-build-success-hook
+ #:export (default-build-submitted-hook
+ default-build-success-hook
build-success-publish-hook
build-success-s3-publish-hook
default-build-failure-hook
build-failure-retry-hook
default-build-missing-inputs-hook))
+(define (default-build-submitted-hook build-coordinator build-id)
+ (display
+ (simple-format #f "build ~A submtited\n" build-id)
+ (current-error-port)))
+
(define (default-build-success-hook build-coordinator build-id)
(define datastore
(build-coordinator-datastore build-coordinator))
diff --git a/scripts/guix-build-coordinator.in b/scripts/guix-build-coordinator.in
index 01752bd..8163280 100644
--- a/scripts/guix-build-coordinator.in
+++ b/scripts/guix-build-coordinator.in
@@ -152,6 +152,11 @@
arg)
(exit 1)))
result)))
+ (option '("build-submitted-hook") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'build-submitted-hook
+ (read/eval arg)
+ (alist-delete 'build-submitted-hook result))))
(option '("build-success-hook") #t #f
(lambda (opt name arg result)
(alist-cons 'build-success-hook
@@ -173,6 +178,7 @@
`((agent-communication . "http://0.0.0.0:8745")
(client-communication . "http://127.0.0.1:8746")
(allocation-strategy . ,basic-build-allocation-strategy)
+ (build-submitted-hook . ,default-build-submitted-hook)
(build-success-hook . ,default-build-success-hook)
(build-failure-hook . ,default-build-failure-hook)
(build-missing-inputs-hook . ,default-build-missing-inputs-hook)))
@@ -427,7 +433,8 @@ processed?: ~A
(assq-ref opts 'database)
#:metrics-registry metrics-registry))
(hooks
- `((build-success . ,(assq-ref opts 'build-success-hook))
+ `((build-submitted . ,(assq-ref opts 'build-submitted-hook))
+ (build-success . ,(assq-ref opts 'build-success-hook))
(build-failure . ,(assq-ref opts 'build-failure-hook))
(build-missing-inputs . ,(assq-ref opts 'build-missing-inputs-hook))))
(build-coordinator (make-build-coordinator