From 92cc4c2997a50f970068af8e08a4410b86a25886 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Sun, 9 Mar 2025 18:32:14 -0300 Subject: packages.scm: Add cicd-service-type --- src/org/euandre/packages.scm | 79 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/org/euandre/packages.scm b/src/org/euandre/packages.scm index bbcd27b..795a846 100644 --- a/src/org/euandre/packages.scm +++ b/src/org/euandre/packages.scm @@ -116,6 +116,20 @@ wscat-configuration-listen-socket wscat-configuration-upstream-socket + + cicd-configuration + make-cicd-configuration + cicd-configuration? + cicd-configuration-name + cicd-configuration-package + cicd-configuration-user + cicd-configuration-group + cicd-configuration-log-file + cicd-configuration-data-directory + cicd-configuration-run-directory + cicd-configuration-run-in-container? + cicd-configuration-container-name + fmt str service-type-for)) @@ -553,9 +567,7 @@ backupit eut nicely - package - q - cicd)))) + package)))) (define (syskeep-rotations config) (match-record config @@ -1010,7 +1022,7 @@ The default configuration should provide sane values for all of these." (service-type-for 'glaze (glaze-configuration) '())) (define-public hsts-service-type - (service-type-for 'hsts (hsts-configuration) '())) + (service-type-for 'hsts (hsts-configuration) '())) (define-public untls-service-type (service-type-for 'untls (untls-configuration) '())) @@ -1020,6 +1032,65 @@ The default configuration should provide sane values for all of these." +(define-record-type* + cicd-configuration + make-cicd-configuration + cicd-configuration? + (name cicd-configuration-name (default "cicd")) + (package cicd-configuration-package (default cicd)) + (user cicd-configuration-user (default "cicd")) + (group cicd-configuration-group (default "cicd")) + (log-file cicd-configuration-log-file (default "/var/log/cicd/cicd.log")) + (data-directory cicd-configuration-data-directory (default "/var/lib/cicd")) + (run-directory cicd-configuration-run-directory (default "/var/run/cicd")) + (run-in-container? cicd-configuration-run-in-container? (default #f)) + (container-name cicd-configuration-container-name (default "cicd"))) + +(define (cicd-profile config) + (match-record config + (package) + (list + q + package))) + +(define (cicd-shepherd-services config) + (match-record config + (user group log-file data-directory) + (list + (shepherd-service + (provision '(cicd)) + (requirement '()) + (start + #~(make-forkexec-constructor + (list + (cmd-for config) + "daemon") + #:user #$user + #:group #$group + #:log-file #$log-file + #:directory #$data-directory)) + (documentation "The background daemon service that powers the CI."))))) + +(define-public cicd-service-type + (service-type + (name 'cicd) + (extensions + (list + (service-extension shepherd-root-service-type + cicd-shepherd-services) + (service-extension profile-service-type + cicd-profile) + (service-extension activation-service-type + (activation-for )) + (service-extension account-service-type + (accounts-for )) + (service-extension log-rotation-service-type + (rotations-for )))) + (default-value (cicd-configuration)) + (description (fmt "The CI agent service that backs a Git server.")))) + + + (list remembering eut -- cgit v1.2.3