diff options
Diffstat (limited to 'guix/forge')
| -rw-r--r-- | guix/forge/forge.scm | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/guix/forge/forge.scm b/guix/forge/forge.scm index 31728dc..63bc68d 100644 --- a/guix/forge/forge.scm +++ b/guix/forge/forge.scm @@ -63,6 +63,7 @@ forge-project-repository-branch forge-project-web-domain forge-project-tissue? + forge-project-website-ci-job forge-project-ci-jobs forge-project-ci-jobs-trigger forge-project-parallel-ci-job-runs @@ -91,6 +92,10 @@ (default #f)) (tissue? forge-project-tissue? (default #f)) + (website-ci-job forge-project-website-ci-job + ;; TODO: Add default website builder. + (default #f) + (thunked)) (ci-jobs forge-project-ci-jobs (default '()) (thunked)) (ci-jobs-trigger forge-project-ci-jobs-trigger ; one of 'post-receive-hook, 'cron, 'webhook @@ -485,6 +490,17 @@ that were built." (package-channels pkg)))))))) inferior)))))))) +(define (switch-symlinks-gexp link target) + "Return a G-expression that links @var{link} to @var{target}. @var{target} is a +singleton list of targets as returned by @code{guix-channel-job-gexp}." + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + (switch-symlinks #$link + (match #$target + ((target) target)))))) + (define (forge-nginx-server-blocks config) "Return list of @code{<nginx-server-configuration>} extensions for forge configuration @var{config}." @@ -548,7 +564,17 @@ value of the returned list is a @code{<forge-laminar-job>} object." (inherit job) (contexts (cons (forge-project-name project) (forge-laminar-job-contexts job))))) - (forge-project-ci-jobs project))) + ;; Prepend website CI job to the other CI jobs. + (if (forge-project-website-ci-job project) + (cons (forge-laminar-job + (inherit (forge-project-website-ci-job project)) + (run (switch-symlinks-gexp + (string-append (forge-configuration-websites-directory config) + "/" + (forge-project-name project)) + (forge-laminar-job-run (forge-project-website-ci-job project))))) + (forge-project-ci-jobs project)) + (forge-project-ci-jobs project)))) (forge-configuration-projects config))) (define (forge-ci-job-contexts config) |
