From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id iLSxIM3R/l/ZWQAA0tVLHw (envelope-from ) for ; Wed, 13 Jan 2021 10:56:13 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id SPu4HM3R/l9MeAAAB5/wlQ (envelope-from ) for ; Wed, 13 Jan 2021 10:56:13 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 0A4159403AE for ; Wed, 13 Jan 2021 10:56:12 +0000 (UTC) Received: from localhost ([::1]:33270 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzdow-00011V-Tb for larch@yhetil.org; Wed, 13 Jan 2021 05:56:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzdoo-00010B-89 for guix-patches@gnu.org; Wed, 13 Jan 2021 05:56:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:51175) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzdon-0001EM-UP for guix-patches@gnu.org; Wed, 13 Jan 2021 05:56:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kzdon-0004zZ-Rr for guix-patches@gnu.org; Wed, 13 Jan 2021 05:56:01 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#45838] website: Add a Cuirass page. Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 13 Jan 2021 10:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 45838 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 45838@debbugs.gnu.org X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.161053530619071 (code B ref -1); Wed, 13 Jan 2021 10:56:01 +0000 Received: (at submit) by debbugs.gnu.org; 13 Jan 2021 10:55:06 +0000 Received: from localhost ([127.0.0.1]:34489 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kzdnu-0004xX-7v for submit@debbugs.gnu.org; Wed, 13 Jan 2021 05:55:06 -0500 Received: from lists.gnu.org ([209.51.188.17]:55634) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kzdns-0004xP-Vn for submit@debbugs.gnu.org; Wed, 13 Jan 2021 05:55:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzdns-0000uM-MS for guix-patches@gnu.org; Wed, 13 Jan 2021 05:55:04 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54304) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzdnr-0000o9-PI; Wed, 13 Jan 2021 05:55:03 -0500 Received: from [2a01:e0a:19b:d9a0:1538:87ab:3a95:7600] (port=57492 helo=cervin) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kzdnp-0000AN-Mu; Wed, 13 Jan 2021 05:55:02 -0500 From: Mathieu Othacehe Date: Wed, 13 Jan 2021 11:54:59 +0100 Message-ID: <87turlumws.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: luis.felipe.la@protonmail.com Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -1.36 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 0A4159403AE X-Spam-Score: -1.36 X-Migadu-Scanner: scn1.migadu.com X-TUID: iX9YYWbT+gSp --=-=-= Content-Type: text/plain 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 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-website-Add-a-Cuirass-page.patch >From b7c3b92b3f2b890163be65e77084144589f4f72e Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe 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 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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 )E9ZfifqktgI{|g3@f1 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