Subject: bug#45838: closed (Re: [bug#45838] website: Add a Cuirass page.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 14 Jan 2021 17:45:02 +0000

Your bug report

#45838: website: Add a Cuirass page.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
45838: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=45838
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#45838] website: Add a Cuirass page.
From: Mathieu Othacehe <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Thu, 14 Jan 2021 18:43:59 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Fixed Luis remarks, switched for the real logo and pushed!

Thanks,

Mathieu

Subject: website: Add a Cuirass page.
From: Mathieu Othacehe <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Wed, 13 Jan 2021 11:54:59 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

This patch adds a Cuirass project page to the website. Luis, I used one
of your logo proposals to have a first overview. We will have to replace
it with the real logo of course.

There's a screenshot of the result attached.

Thanks,

Mathieu
>From b7c3b92b3f2b890163be65e77084144589f4f72e Mon Sep 17 00:00:00 2001
From: Mathieu Othacehe <[email-masked]>
Date: Wed, 13 Jan 2021 11:46:10 +0100
Subject: [PATCH] website: Add a Cuirass page.

* website/apps/base/templates/cuirass.scm: New file.
* website/po/POTFILES: Add it.
* website/static/base/img/cuirass.png: New file.
* website/apps/base/builder.scm (cuirass-builder): New procedure,
(builder): add it.
* website/apps/base/templates/contribute.scm (contribute-t): Add a link to
Cuirass page.
---
 website/apps/base/builder.scm              |  24 ++++---
 website/apps/base/templates/contribute.scm |   6 +-
 website/apps/base/templates/cuirass.scm    |  70 +++++++++++++++++++++
 website/po/POTFILES                        |   1 +
 website/static/base/img/cuirass.png        | Bin 0 -> 10875 bytes
 5 files changed, 89 insertions(+), 12 deletions(-)
 create mode 100644 website/apps/base/templates/cuirass.scm
 create mode 100644 website/static/base/img/cuirass.png

diff --git a/website/apps/base/builder.scm b/website/apps/base/builder.scm
index 4882dc5..d0b7094 100644
--- a/website/apps/base/builder.scm
+++ b/website/apps/base/builder.scm
@@ -6,6 +6,7 @@
   #:use-module (apps base data)
   #:use-module (apps base templates about)
   #:use-module (apps base templates contact)
+  #:use-module (apps base templates cuirass)
   #:use-module (apps base templates irc)
   #:use-module (apps base templates contribute)
   #:use-module (apps base templates donate)
@@ -47,15 +48,16 @@
      application. See Haunt <page> objects for more information."
   (flatten
    (list (menu-builder)
-	 (home-builder site posts)
-	 (help-builder)
-	 (donate-builder)
-	 (about-builder)
-	 (contact-builder)
-	 (irc-builder)
-	 (contribute-builder)
-	 (security-builder)
-	 (graphics-builder))))
+         (home-builder site posts)
+         (help-builder)
+         (cuirass-builder)
+         (donate-builder)
+         (about-builder)
+         (contact-builder)
+         (irc-builder)
+         (contribute-builder)
+         (security-builder)
+         (graphics-builder))))

@@ -83,12 +85,14 @@
   "Return a Haunt page representing the Contribute page of the website."
   (make-page "contribute/index.html" (contribute-t) sxml->html))
 
+(define (cuirass-builder)
+  "Return a Haunt page representing the Cuirass page of the website."
+  (make-page "cuirass/index.html" (cuirass-t) sxml->html))
 
 (define (donate-builder)
   "Return a Haunt page representing the Donate page of the website."
   (make-page "donate/index.html" (donate-t) sxml->html))
 
-
 (define (graphics-builder)
   "Return a Haunt page representing the Graphics page of the website."
   (make-page "graphics/index.html" (graphics-t) sxml->html))
diff --git a/website/apps/base/templates/contribute.scm b/website/apps/base/templates/contribute.scm
index b91b9d4..a126b3b 100644
--- a/website/apps/base/templates/contribute.scm
+++ b/website/apps/base/templates/contribute.scm
@@ -217,11 +217,13 @@ Translation|I18N|L10N|Artwork") #\|)
             us keep the system up and running smoothly. "))
         ,(G_
           `(p
-            "You can also "
+            "You can contribute to our continous integration software: "
+            (a (@ (href ,(guix-url "cuirass/"))) "Cuirass")
+            ". You can also "
             ,(G_ `(a (@ (href ,(guix-url "donate/")))
                      "donate hardware or hosting"))
             " for our "
-            ,(G_ `(a (@ (href "https://ci.guix.gnu.org")) "build farm")) ".  "))
+            ,(G_ `(a (@ (href "https://ci.guix.gnu.org")) "build farm"))))
 	(p
 	 ,(link-more
            #:label (G_ "Contribute")
diff --git a/website/apps/base/templates/cuirass.scm b/website/apps/base/templates/cuirass.scm
new file mode 100644
index 0000000..63ecf5d
--- /dev/null
+++ b/website/apps/base/templates/cuirass.scm
@@ -0,0 +1,70 @@
+;;; GNU Guix web site
+;;; Initially written by sirgazil who waives all
+;;; copyright interest on this file.
+
+(define-module (apps base templates cuirass)
+  #:use-module (apps base templates components)
+  #:use-module (apps base templates theme)
+  #:use-module (apps base types)
+  #:use-module (apps base utils)
+  #:use-module (apps i18n)
+  #:export (cuirass-t))
+
+(define (cuirass-t)
+  "Return the Cuirass page in SHTML."
+  (theme
+   #:title (C_ "webpage title" '("Cuirass"))
+   #:description
+   (G_ "We are looking for donations of hardware and optionally
+   hosting for machines (they should be usable with exclusively
+   free software).")
+   #:keywords
+   (string-split ;TRANSLATORS: |-separated list of webpage keywords
+    (G_ "GNU|Linux|Unix|Free software|Libre software|Operating \
+system|GNU Guix package manager|Cuirass|CI") #\|)
+   #:css (list
+          (guix-url "static/base/css/page.css"))
+   #:content
+   `(main
+     (section
+      (@ (class "page centered-block limit-width"))
+      (img (@ (src ,(guix-url "static/base/img/cuirass.png"))
+              (alt "")))
+      ,(G_ `(p "Cuirass is the GNU Guix continuous
+integration software. It's a general purpose build automation server written
+in GNU Guile that checks out sources from VCS repositories, execute build jobs
+and store build results in a database. Cuirass also provides a web interface
+to monitor the build results."))
+
+      ,(G_ `(p "Cuirass is running on GNU Guix build farm at "
+               `(a (@ (href "https://ci.guix.gnu.org"))
+                   "https://ci.guix.gnu.org")
+               "."))
+      ,(G_ `(h3 "Features"))
+      (ul
+       (li
+        ,(G_ "Poll sources from multiple Git repositories."))
+       (li
+        ,(G_ "Execute builds on local or remote Guix daemons."))
+       (li
+        ,(G_ "Store build products or artifacts."))
+       (li
+        ,(G_ "Collect build logs and metrics."))
+       (li
+        ,(G_ "Provides a REST API."))
+       (li
+        ,(G_ `"High level of concurrency using ")
+        (a (@ (href "https://github.com/wingo/fibers"))
+           "Guile-Fibers")
+        ,(G_ " asynchronous library.")))
+      ,(G_ `(h3 "Documentation"))
+      ,(G_ `(p "Cuirass documentation is accessible "
+               ,(G_ `(a (@ (href ,(manual-url "Continuous-Integration.html")))
+                        "here"))
+               "."))
+      ,(G_ `(h3 "Project repository"))
+      ,(G_ `(p "Cuirass source code is hosted at "
+               ,(G_ `(a (@ (href "//git.savannah.gnu.org/cgit/guix/guix-cuirass.git"))
+                        "git://git.sv.gnu.org/guix/guix-cuirass.git"))
+               "."))
+      ))))
diff --git a/website/po/POTFILES b/website/po/POTFILES
index 6f9f349..51f1c1f 100644
--- a/website/po/POTFILES
+++ b/website/po/POTFILES
@@ -9,6 +9,7 @@ apps/base/templates/help.scm
 # other files
 apps/base/templates/contact.scm
 apps/base/templates/contribute.scm
+apps/base/templates/cuirass.scm
 apps/base/templates/donate.scm
 apps/base/templates/graphics.scm
 apps/base/templates/irc.scm
diff --git a/website/static/base/img/cuirass.png b/website/static/base/img/cuirass.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1932180a8943b78d912fe71eb007ce1c00f6209
GIT binary patch
literal 10875
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
MMdwDbvh{=i19L6v_5c6?

literal 0
HcmV?d00001

-- 
2.29.2