about summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2022-07-06 02:21:02 +0530
committerArun Isaac2022-07-06 02:50:11 +0530
commit43ab5745d9c0a7a257ab2d1ffcfe18ead3b557b5 (patch)
tree67abf59d1ff139265b76f84fdce0a83abb0949ed
parentf43e156273cbe8d9b14ae05afcf2a0179ed3e23e (diff)
downloadgn-machines-43ab5745d9c0a7a257ab2d1ffcfe18ead3b557b5.tar.gz
Switch to tissue service from guix-forge.
* genenetwork-development-deploy.sh: Share tissue state directory with
container.
* genenetwork-development.scm: Do not import tissue from (gn packages
gemini). Import (forge tissue).
(<tissue-configuration>, <tissue-host>): Delete types.
(%tissue-accounts, tissue-service-type): Delete variables.
(gn-gemtext-threads-website, gn-gemtext-threads-index,
tissue-conf-gexp, tissue-shepherd-service): Delete functions.
(gn-gemtext-threads-project)[ci-jobs]: Use tissue pull in
gn-gemtext-threads job.
(tissue-reverse-proxy-server-block): Use default tissue state
directory and unix socket paths. Do not accept them as arguments.
(operating-system)[services]: Use new tissue-service-type
parameters. Update invocation of tissue-reverse-proxy-server-block.
* genenetwork/development-helper.scm (tissue-website-gexp,
tissue-index-gexp): Delete functions.
-rwxr-xr-xgenenetwork-development-deploy.sh1
-rw-r--r--genenetwork-development.scm177
-rw-r--r--genenetwork/development-helper.scm24
3 files changed, 26 insertions, 176 deletions
diff --git a/genenetwork-development-deploy.sh b/genenetwork-development-deploy.sh
index 16ff716..9c97275 100755
--- a/genenetwork-development-deploy.sh
+++ b/genenetwork-development-deploy.sh
@@ -26,6 +26,7 @@ container_script=$(guix system container --network \
                         --load-path=. \
                         --share=/var/guix/daemon-socket=/var/host-guix/daemon-socket \
                         --share=/var/guix-containers/genenetwork-development/var/lib/laminar=/var/lib/laminar \
+                        --share=/var/guix-containers/genenetwork-development/var/lib/tissue=/var/lib/tissue \
                         --share=/var/guix-containers/genenetwork-development/var/lib/virtuoso=/var/lib/virtuoso \
                         --expose=/export/data/genenetwork/genotype_files \
                         --share=/export/genenetwork-database-dump \
diff --git a/genenetwork-development.scm b/genenetwork-development.scm
index dbbdfed..a58d5d2 100644
--- a/genenetwork-development.scm
+++ b/genenetwork-development.scm
@@ -18,7 +18,6 @@
 ;;; <https://www.gnu.org/licenses/>.
 
 (use-modules (gnu)
-             ((gn packages gemini) #:select (tissue))
              ((gn packages genenetwork) #:select (genenetwork2 genenetwork3))
              ((gn packages quality-control) #:select (sbcl-qc))
              (gn services databases)
@@ -57,6 +56,7 @@
              (guix store)
              (forge forge)
              (forge laminar)
+             (forge tissue)
              (forge utils)
              (forge webhook)
              (srfi srfi-1)
@@ -622,48 +622,6 @@ command to be executed."
 ;;; gn-gemtext-threads
 ;;;
 
-(define (gn-gemtext-threads-website project job)
-  (with-imported-modules '((guix utils))
-    #~(begin
-        (use-modules (guix utils))
-      
-        (switch-symlinks #$(forge-project-website-directory project)
-                         #$(derivation-job-gexp
-                            project
-                            job
-                            (with-imported-modules (source-module-closure '((genenetwork development-helper))
-                                                                          #:select? import-module?)
-                              #~(lambda (source-checkout)
-                                  ((@@ (genenetwork development-helper)
-                                       tissue-website-gexp)
-                                   source-checkout
-                                   #$(profile
-                                      (content (packages->manifest (list tissue)))
-                                      (allow-collisions? #t)))))
-                            #:guix-daemon-uri %guix-daemon-uri
-                            #:deep-clone? #t)))))
-
-(define (gn-gemtext-threads-index project job index)
-  (with-imported-modules '((guix utils))
-    #~(begin
-        (use-modules (guix utils))
-
-        (switch-symlinks #$index
-                         #$(derivation-job-gexp
-                            project
-                            job
-                            (with-imported-modules (source-module-closure '((genenetwork development-helper))
-                                                                          #:select? import-module?)
-                              #~(lambda (source-checkout)
-                                  ((@@ (genenetwork development-helper)
-                                       tissue-index-gexp)
-                                   source-checkout
-                                   #$(profile
-                                      (content (packages->manifest (list tissue)))
-                                      (allow-collisions? #t)))))
-                            #:guix-daemon-uri %guix-daemon-uri
-                            #:deep-clone? #t)))))
-
 (define gn-gemtext-threads-project
   (forge-project
    (name "gn-gemtext-threads")
@@ -671,112 +629,14 @@ command to be executed."
    (website-directory "/srv/http/issues")
    (ci-jobs (list (forge-laminar-job
                    (name "gn-gemtext-threads")
-                   (run (gn-gemtext-threads-website
-                         this-forge-project
-                         this-forge-laminar-job)))
-                  (forge-laminar-job
-                   (name "gn-gemtext-threads-index")
-                   (run (gn-gemtext-threads-index
-                         this-forge-project
-                         this-forge-laminar-job
-                         "/srv/http/issues-index")))))
-   (ci-jobs-trigger 'webhook)))
+                   (run (with-packages (list nss-certs openssl)
+                          (with-imported-modules '((guix build utils))
+                            #~(begin
+                                (use-modules (guix build utils))
 
-
-;;;
-;;; tissue service
-;;;
-
-(define-record-type* <tissue-configuration>
-  tissue-configuration make-tissue-configuration
-  tissue-configuration?
-  (listen tissue-configuration-listen
-          (default "127.0.0.1:8080"))
-  (hosts tissue-configuration-hosts
-         (default '())))
-
-(define-record-type* <tissue-host>
-  tissue-host make-tissue-host
-  tissue-host?
-  (name tissue-host-name)
-  (indexed-repository tissue-host-indexed-repository))
-
-(define %tissue-accounts
-  (list (user-account
-         (name "tissue")
-         (group "tissue")
-         (system? #t)
-         (comment "tissue user")
-         (home-directory "/var/empty")
-         (shell (file-append shadow "/sbin/nologin")))
-        (user-group
-         (name "tissue")
-         (system? #t))))
-
-(define (tissue-conf-gexp config)
-  #~(begin
-      (call-with-output-file #$output
-        (lambda (port)
-          (write '((listen . #$(tissue-configuration-listen config))
-                   (hosts . #$(map (lambda (host)
-                                     `(,(tissue-host-name host)
-                                       (indexed-repository . ,(tissue-host-indexed-repository host))))
-                                   (tissue-configuration-hosts config))))
-                 port)))))
-
-(define (tissue-shepherd-service config)
-  (shepherd-service
-   (documentation "Run tissue web server.")
-   (provision '(tissue))
-   (requirement '(networking))
-   (modules '((gnu build shepherd)
-              (gnu system file-systems)))
-   (start
-    (with-imported-modules (source-module-closure '((gnu build shepherd)
-                                                    (gnu system file-systems)))
-      #~(make-forkexec-constructor/container
-         (list #$(file-append tissue "/bin/tissue")
-               "run-web"
-               #$(computed-file "tissue.conf" (tissue-conf-gexp config)))
-         #:user "tissue"
-         #:group "tissue"
-         #:mappings (cons (file-system-mapping
-                           (source "/var/log/tissue.log")
-                           (target source)
-                           (writable? #t))
-                          (map (lambda (directory)
-                                 (file-system-mapping
-                                  (source directory)
-                                  (target source)))
-                               '#$(map tissue-host-indexed-repository
-                                       (tissue-configuration-hosts config))))
-         #:log-file "/var/log/tissue.log")))
-   (stop #~(make-kill-destructor))))
-
-(define tissue-service-type
-  (service-type
-   (name 'tissue)
-   (description "Run tissue web server.")
-   (extensions
-    (list (service-extension account-service-type
-                             (const %tissue-accounts))
-          (service-extension shepherd-root-service-type
-                             (compose list tissue-shepherd-service))))))
-
-(define (tissue-reverse-proxy-server-block listen tissue-listen tissue-static-document-root)
-  "Return an <nginx-server-configuration> object to reverse proxy
-tissue. The nginx server will listen on LISTEN, reverse proxy to
-tissue listening on TISSUE-LISTEN and serve static files from
-TISSUE-STATIC-DOCUMENT-ROOT."
-  (nginx-server-configuration
-   (server-name '("issues.genenetwork.org"))
-   (listen (list listen))
-   (root tissue-static-document-root)
-   (try-files (list "$uri" "@tissue-search"))
-   (locations
-    (list (nginx-location-configuration
-           (uri "@tissue-search")
-           (body (list (string-append "proxy_pass http://" tissue-listen ";"))))))))
+                                (invoke #$(file-append tissue "/bin/tissue")
+                                        "pull" "issues.genenetwork.org"))))))))
+   (ci-jobs-trigger 'webhook)))
 
 
 ;;;
@@ -868,6 +728,20 @@ list of channel names for which a channels.scm should be published."
                                            (channels-scm-gexp published-channel-names))
                           ";"))))))))
 
+(define (tissue-reverse-proxy-server-block listen)
+  "Return an <nginx-server-configuration> object listening on LISTEN to
+reverse proxy tissue."
+  (nginx-server-configuration
+   (server-name '("issues.genenetwork.org"))
+   (listen (list listen))
+   (root "/var/lib/tissue/issues.genenetwork.org/website")
+   (try-files (list "$uri" "@tissue-search"))
+   (locations
+    (list (nginx-location-configuration
+           (uri "@tissue-search")
+           (body (list "proxy_pass http://unix:/var/run/tissue/socket:;"
+                       "proxy_set_header Host $host;")))))))
+
 (operating-system
   (host-name "genenetwork-development")
   (timezone "UTC")
@@ -931,17 +805,16 @@ list of channel names for which a channels.scm should be published."
                                                                #:directories? #t)))))
                    (service tissue-service-type
                             (tissue-configuration
-                             (listen "127.0.0.1:9088")
                              (hosts
                               (list (tissue-host
                                      (name "issues.genenetwork.org")
-                                     (indexed-repository "/srv/http/issues-index"))))))
+                                     (user "laminar")
+                                     (upstream-repository "https://github.com/genenetwork/gn-gemtext-threads"))))))
                    (service nginx-service-type
                             (nginx-configuration
                              (server-blocks
                               (list (laminar-reverse-proxy-server-block
                                      "9090" "localhost:9089"
                                      (list 'gn-bioinformatics 'guix))
-                                    (tissue-reverse-proxy-server-block
-                                     "9090" "localhost:9088" "/srv/http/issues")))))
+                                    (tissue-reverse-proxy-server-block "9090")))))
                    %base-services)))
diff --git a/genenetwork/development-helper.scm b/genenetwork/development-helper.scm
index 87d820a..9e846f4 100644
--- a/genenetwork/development-helper.scm
+++ b/genenetwork/development-helper.scm
@@ -146,27 +146,3 @@ dependencies."
              (invoke "gunicorn"
                      "-b" (string-append ip ":" port)
                      "gn3.app:create_app()")))))))
-
-(define (tissue-website-gexp source profile)
-  "Return a G-expression that builds a tissue website from
-SOURCE. PROFILE is a profile with necessary dependencies."
-  (with-imported-modules '((guix build utils))
-    (with-profile profile
-      #~(begin
-          (use-modules (guix build utils))
-
-          (copy-recursively #$source (getcwd))
-          (invoke "tissue" "web" #$output)))))
-
-(define (tissue-index-gexp source profile)
-  "Return a G-expression that builds a tissue index from
-SOURCE. PROFILE is a profile with necessary dependencies."
-  (with-imported-modules '((guix build utils))
-    (with-profile profile
-      #~(begin
-          (use-modules (guix build utils))
-
-          (mkdir-p #$output)
-          (chdir #$output)
-          (copy-recursively #$source #$output)
-          (invoke "tissue" "index")))))