From ee1ceaee8eab9c1ac3a98039fa159fdd960e8443 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 20 Jan 2024 08:08:14 +0000 Subject: Add an information flow diagram --- Makefile.am | 6 +++++- README.org | 5 +++++ guix-qa-frontpage/server.scm | 27 ++++++++++++++++++++++----- qa-information-flow.plantuml | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 qa-information-flow.plantuml diff --git a/Makefile.am b/Makefile.am index 81b68fc..5976691 100644 --- a/Makefile.am +++ b/Makefile.am @@ -57,9 +57,13 @@ README.html: README.org emacs -q --no-splash -batch -visit README.org \ -eval "(progn (require 'org) (let ((org-export-htmlize-output-type 'css)) (org-html-export-to-html nil nil nil t nil)))" -install-data-local: README.html +qa-information-flow.png: qa-information-flow.plantuml + plantuml -v qa-information-flow.plantuml + +install-data-local: README.html qa-information-flow.png mkdir -p "$(DESTDIR)$(pkgdatadir)" || exit 1; cp -r assets "$(DESTDIR)$(pkgdatadir)/" || exit 1; mkdir -p "$(DESTDIR)$(docdir)"; cp README.org "$(DESTDIR)$(docdir)/README.org" cp README.html "$(DESTDIR)$(docdir)/README.html" + cp qa-information-flow.plantuml qa-information-flow.png "$(DESTDIR)$(docdir)" diff --git a/README.org b/README.org index 5a6099a..e4d753a 100644 --- a/README.org +++ b/README.org @@ -29,6 +29,11 @@ After that, you can start the service via: Expect pages to load slowly since the QA frontpage won't have up to date cached data to use. +* Information flow + +#+CAPTION: Diagram describing how information moves between different components +[[./qa-information-flow.png]] + * Ideas ** For branches *** TODO Show broken packages diff --git a/guix-qa-frontpage/server.scm b/guix-qa-frontpage/server.scm index c46f3ef..b175b0e 100644 --- a/guix-qa-frontpage/server.scm +++ b/guix-qa-frontpage/server.scm @@ -92,6 +92,12 @@ (static-asset-from-store-renderer assets-directory) (static-asset-from-directory-renderer assets-directory))) + (define handle-doc-assets + (if (string-prefix? (%store-prefix) + doc-dir) + (static-asset-from-store-renderer doc-dir) + (static-asset-from-directory-renderer doc-dir))) + (define gc-metrics-updater! (get-gc-metrics-updater metrics-registry)) @@ -774,6 +780,14 @@ has no patches or has been closed.") "README not found" "The README.html file does not exist") #:code 404)))) + (('GET (and "qa-information-flow.png" filename)) + (or (handle-doc-assets filename + (request-headers request)) + (list (build-response #:code 404) + (string-append + "Resource not found: " + (uri->string + (request-uri request)))))) ((method path ...) (render-html #:sxml (general-not-found @@ -791,11 +805,14 @@ has no patches or has been closed.") (lambda () (let-values (((request-components mime-types) (request->path-components-and-mime-type request))) - (controller request - (cons (request-method request) - request-components) - mime-types - body))) + (call-with-delay-logging + controller + #:threshold 30 + #:args (list request + (cons (request-method request) + request-components) + mime-types + body)))) #:on-error 'backtrace #:post-error (lambda args (render-html #:sxml (error-page args) diff --git a/qa-information-flow.plantuml b/qa-information-flow.plantuml new file mode 100644 index 0000000..5257b80 --- /dev/null +++ b/qa-information-flow.plantuml @@ -0,0 +1,40 @@ +@startuml + +cloud "Running on beid" { + component Patchwork [ + Patchwork + patches.guix-patches.cbaines.net + ] + component patchesgit [ + Patches Git repository + git.guix-patches.cbaines.net + ] + component dataservice [ + Guix Data Service + data.qa.guix.gnu.org + ] +} + +cloud "Running on bayfront" { + component qafrontpage [ + QA Frontpage + qa.guix.gnu.org + ] + component buildcoordinator [ + Guix Build Coordinator + coordinator.bayfront.guix.gnu.org + ] +} + +[Guix Issue Tracker] + +[guix-patches mailing list] --> [Patchwork] : Patchwork listens via getmail +[Patchwork] --> [qafrontpage] : QA fetches patches and series info +[qafrontpage] --> [patchesgit] : QA creates branches for patch series +[patchesgit] --> [dataservice] : Guix Data Service polls for new branches and processes them +[dataservice] --> [qafrontpage] : QA fetches information about processed revisions +[qafrontpage] --> [buildcoordinator] : QA submits builds for affected packages +[buildcoordinator] --> [dataservice] : Reports build statuses +[qafrontpage] --> [Guix Issue Tracker] : Mumi uses badges from QA + +@enduml -- cgit v1.2.3