aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-06-28 13:13:21 +0100
committerChristopher Baines <mail@cbaines.net>2020-07-01 17:43:38 +0100
commitdbadb56b19b76d62d0dddfdea1f1676b0366b729 (patch)
tree943bb606d509eec43c79a7530b662ff7bde16603
parent3423a03688e4a03c7f83849c113aa6b6c58ed945 (diff)
downloadbuild-coordinator-dbadb56b19b76d62d0dddfdea1f1676b0366b729.tar
build-coordinator-dbadb56b19b76d62d0dddfdea1f1676b0366b729.tar.gz
Add a hook for when a build starts on an agent
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm16
-rw-r--r--guix-build-coordinator/hooks.scm6
-rw-r--r--scripts/guix-build-coordinator.in7
3 files changed, 26 insertions, 3 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 4251f75..5ed70ac 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -612,8 +612,14 @@ VALUES "
build-id
agent-id)
- (call-with-worker-thread
- (slot-ref datastore 'worker-writer-thread-channel)
+ (define (handle-inserting-unprocessed-hook-event db build-id agent-id)
+ (insert-unprocessed-hook-event
+ db
+ "build-started"
+ (list build-id agent-id)))
+
+ (datastore-call-with-transaction
+ datastore
(lambda (db)
(sqlite-exec
db
@@ -625,7 +631,11 @@ INSERT INTO build_starts (
build-id "', '"
agent-id "', "
"datetime('now')"
- ")")))))
+ ")"))
+
+ (handle-inserting-unprocessed-hook-event db build-id agent-id)))
+
+ #t)
(define-method (datastore-find-build-starts
(datastore <sqlite-datastore>)
diff --git a/guix-build-coordinator/hooks.scm b/guix-build-coordinator/hooks.scm
index 0491df6..2def72c 100644
--- a/guix-build-coordinator/hooks.scm
+++ b/guix-build-coordinator/hooks.scm
@@ -30,6 +30,7 @@
#:use-module (guix-build-coordinator datastore)
#:use-module (guix-build-coordinator coordinator)
#:export (default-build-submitted-hook
+ default-build-started-hook
default-build-success-hook
build-success-publish-hook
build-success-s3-publish-hook
@@ -42,6 +43,11 @@
(simple-format #f "build ~A submtited\n" build-id)
(current-error-port)))
+(define (default-build-started-hook build-coordinator build-id agent-id)
+ (display
+ (simple-format #f "build ~A started on agent ~A\n" build-id agent-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 8163280..1d2781e 100644
--- a/scripts/guix-build-coordinator.in
+++ b/scripts/guix-build-coordinator.in
@@ -157,6 +157,11 @@
(alist-cons 'build-submitted-hook
(read/eval arg)
(alist-delete 'build-submitted-hook result))))
+ (option '("build-started-hook") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'build-started-hook
+ (read/eval arg)
+ (alist-delete 'build-started-hook result))))
(option '("build-success-hook") #t #f
(lambda (opt name arg result)
(alist-cons 'build-success-hook
@@ -179,6 +184,7 @@
(client-communication . "http://127.0.0.1:8746")
(allocation-strategy . ,basic-build-allocation-strategy)
(build-submitted-hook . ,default-build-submitted-hook)
+ (build-started-hook . ,default-build-started-hook)
(build-success-hook . ,default-build-success-hook)
(build-failure-hook . ,default-build-failure-hook)
(build-missing-inputs-hook . ,default-build-missing-inputs-hook)))
@@ -434,6 +440,7 @@ processed?: ~A
#:metrics-registry metrics-registry))
(hooks
`((build-submitted . ,(assq-ref opts 'build-submitted-hook))
+ (build-started . ,(assq-ref opts 'build-started-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))))