From 4187ea8eaf5a5e3c7805f221a4f7fe92cc880106 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Wed, 9 Feb 2022 00:14:04 +0530 Subject: forge: Support triggering jobs with a webhook. * forge/forge.scm: Import (forge webhook). ()[ci-jobs-trigger]: Allow 'webhook. (forge-service-type): Extend webhook-service-type. --- forge/forge.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/forge/forge.scm b/forge/forge.scm index 1ff5f93..fbdce3b 100644 --- a/forge/forge.scm +++ b/forge/forge.scm @@ -33,6 +33,7 @@ #:use-module (guix records) #:use-module (guix store) #:use-module (forge laminar) + #:use-module (forge webhook) #:export (forge-service-type forge-configuration forge-configuration-guix-daemon-uri @@ -66,7 +67,7 @@ (default #f)) (ci-jobs forge-project-configuration-ci-jobs (default '())) - (ci-jobs-trigger forge-project-configuration-ci-jobs-trigger ; one of 'post-receive-hook, 'cron + (ci-jobs-trigger forge-project-configuration-ci-jobs-trigger ; one of 'post-receive-hook, 'cron, 'webhook (default (cond ;; 'post-receive-hook for local repositories ((string-prefix? "/" (forge-project-configuration-repository this-record)) @@ -265,5 +266,16 @@ derivation to run." (map forge-laminar-job-name (forge-project-configuration-laminar-jobs project config)))) #:user "laminar"))) + (forge-configuration-projects config)))) + (service-extension webhook-service-type + (lambda (config) + (filter-map (lambda (project) + (and (eq? (forge-project-configuration-ci-jobs-trigger project) + 'webhook) + (webhook-hook + (id (forge-project-configuration-name project)) + (run (ci-jobs-trigger-gexp + (map forge-laminar-job-name + (forge-project-configuration-laminar-jobs project config))))))) (forge-configuration-projects config)))))) (default-value (forge-configuration)))) -- cgit v1.2.3