aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-01-20 08:08:14 +0000
committerChristopher Baines <mail@cbaines.net>2024-01-20 10:49:37 +0000
commitee1ceaee8eab9c1ac3a98039fa159fdd960e8443 (patch)
tree712f09c4f479e3caad746b08eec94395eafdf024
parentd7b2634efa8f953b926eb251cfc26b0225514d87 (diff)
downloadqa-frontpage-ee1ceaee8eab9c1ac3a98039fa159fdd960e8443.tar
qa-frontpage-ee1ceaee8eab9c1ac3a98039fa159fdd960e8443.tar.gz
Add an information flow diagram
-rw-r--r--Makefile.am6
-rw-r--r--README.org5
-rw-r--r--guix-qa-frontpage/server.scm27
-rw-r--r--qa-information-flow.plantuml40
4 files changed, 72 insertions, 6 deletions
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