website: Update draft post on the QA front-page.

* website/drafts/progress-on-the-qa-frontpage.md: Update.
* website/static/blog/img/qa-issue.png: New file.
* website/static/blog/img/qa-package-changes.png: New file.
This commit is contained in:
Christopher Baines 2023-08-13 08:05:05 +01:00
parent 26ffbf2821
commit 9af5f44a1b
No known key found for this signature in database
GPG Key ID: 5E28A33B0B84F577
3 changed files with 63 additions and 33 deletions

View File

@ -1,10 +1,10 @@
title: Progress so far on the Guix Quality Assurance (QA) frontpage
title: A new Quality Assurance tool for Guix
author: Christopher Baines
tags: Continuous integration, Quality Assurance
date: 2023-07-12 16:30:00
---
Maintaining and adding to Guix's collection of packages can be
Maintaining and expanding Guix's collection of packages can be
complicated. As a distribution with around 22,000 packages, spanning
across around 7 architectures and with support for cross-compilation,
it's quite common for problems to occur when making changes.
@ -20,7 +20,8 @@ This will differ from person to person, but these are some common
concerns:
- Packages not building
- Either now or in the future
- Either now or in the future (as is the case with so-called
[*time bombs*](https://issues.guix.gnu.org/56137))
- Packages building reproducibly
- Packages building on or for a specific architecture
@ -33,10 +34,10 @@ concerns:
There's a range of tools to help maintain Guix. The [package
linters](https://guix.gnu.org/en/manual/en/html_node/Invoking-guix-lint.html)
are a set of simple tools, they cover basic things from the naming of
packages to more complicated things like the validity of the home-page
URL and the formatting of the package definition.
packages to more complicated checkers like the validity of the
home-page URL and the formatting of the package definition.
The [guix weather](https://guix.gnu.org/en/manual/en/html_node/Invoking-guix-weather.html)
The [`guix weather`](https://guix.gnu.org/en/manual/en/html_node/Invoking-guix-weather.html)
tool looks at substitute availability information and can indicate how
many substitutes are available for the current Guix and system. The
[guix challenge](https://guix.gnu.org/en/manual/en/html_node/Invoking-guix-challenge.html)
@ -48,54 +49,83 @@ For translations, [Guix uses
Weblate](https://guix.gnu.org/manual/en/html_node/Translating-Guix.html)
which can provide information on how many translations are available.
## The QA Frontpage
# The QA front-page
Then there's the relatively new Quality Assurance (QA) frontpage, the
Then there's the relatively new Quality Assurance (QA) front-page, the
aim of which is to bring together some of the existing Quality
Assurance related information, as well as new being a good place to do
additional QA tasks.
The QA frontpage
The QA front-page
[started](https://lists.gnu.org/archive/html/guix-devel/2022-09/msg00054.html)
as a service to coordinate automated testing for patches, it queries
the [data service](https://data.qa.guix.gnu.org/) to find out what
derivations have changed and then submits builds for these derivations
to the build coordinator behind
[bordeaux.guix.gnu.org](https://bordeaux.guix.gnu.org/).
as a service to coordinate automated testing for patches. When a patch
or patch series is submitted to guix-patches@gnu.org, it is
automatically applied to create a branch; then once the information is
available from the [Data Service](https://data.qa.guix.gnu.org/) about
this branch, the QA frontpage web interface lets you view which
packages were modified and submits builds for these changes to the
[Build Coordinator](https://guix.gnu.org/en/blog/2021/building-derivations-how-complicated-can-it-be/)
behind [bordeaux.guix.gnu.org](https://guix.gnu.org/en/blog/2021/substitutes-now-also-available-from-bordeauxguixgnuorg/)
to provide build information about the modified packages.
A very similar process applies for non-master branches, the QA
frontpage queries [issues.guix.gnu.org](https://issues.guix.gnu.org/)
to find out which branch is going to be merged next, then queries the
data service to find out what derivations have changed and just like
for patches then submits builds for these changed derivations to the
bordeaux.guix.gnu.org build coordinator.
![QA issue page](/static/blog/img/qa-issue.png)
For both patches and branches the QA frontpage tries to display
information about the effects of the changes. This is a work in
progress though, and there's much more that the QA frontpage should be
able to do to provide clearer descriptions of the changes and any
problems that should be addressed.
A very similar process applies for branches other than the master
branch, the QA front-page queries
[issues.guix.gnu.org](https://issues.guix.gnu.org/) to find out which
branch is going to be merged next, then follows the same process for
patches.
For both patches and branches the QA front-page displays information
about the effects of the changes. When this information is available,
it can assist with reviewing the changes and help get patches merged
quicker. This is a work in progress though, and there's much more that
the QA front-page should be able to do as providing clearer
descriptions of the changes or any other problems that should be
addressed.
![QA package changes page](/static/blog/img/qa-package-changes.png)
# How to get involved?
There's plenty of ways to get involved or contribute to the QA
frontpage.
front-page.
If you submit patches to Guix, the QA frontpage will attempt to apply
If you submit patches to Guix, the QA front-page will attempt to apply
the patches and show what's changed. You can click through from
issues.guix.gnu.org to qa.guix.gnu.org via the QA badge by the status
of the issue.
issues.guix.gnu.org to [qa.guix.gnu.org](https://qa.guix.gnu.org/) via
the QA badge by the status of the issue.
From the QA frontpage, you can also view the list of branches which
From the QA front-page, you can also view the list of branches which
includes the requests for merging if they exist. Similar to the patch
series, for the branch the QA frontpage can display information about
series, for the branch the QA front-page can display information about
the package changes and substitute availability.
There's also plenty of ways to contribute to the QA frontpage and
There's also plenty of ways to contribute to the QA front-page and
connected tools. You can find some ideas and information on how to
run the service in the
[README](https://git.savannah.gnu.org/cgit/guix/qa-frontpage.git/tree/README.org)
and if you have any questions or patches, please email
guix-devel@gnu.org.
`guix-devel@gnu.org`.
# Acknowledgments
Thanks to Simon Tournier and Ludovic Courtès for providing feedback on
an earlier draft of this post.
#### About GNU Guix
[GNU Guix](https://guix.gnu.org) is a transactional package manager
and an advanced distribution of the GNU system that [respects user
freedom](https://www.gnu.org/distros/free-system-distribution-guidelines.html).
Guix can be used on top of any system running the Hurd or the Linux
kernel, or it can be used as a standalone operating system
distribution for i686, x86_64, ARMv7, AArch64 and POWER9 machines.
In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package
management, per-user profiles, and garbage collection. When used as a
standalone GNU/Linux distribution, Guix offers a declarative,
stateless approach to operating system configuration management. Guix
is highly customizable and hackable through
[Guile](https://www.gnu.org/software/guile) programming interfaces and
extensions to the [Scheme](http://schemers.org) language.

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB