Hello Axel, Bastien, Lucas, and other members of the lintian and QA teams,

it's been a long time that I have been interested in building some
infrastructure to manage scheduling and distribution of Debian-related
build, QA and data collection tasks to a network of worker machines. I
called this project debusine:
https://salsa.debian.org/freexian-team/debusine/

It has been started a while ago but thanks to external funding, its
development pace is about to increase significantly. It is being developed
by Freexian with the intention of giving people access to a range of
pre-configured tools and workflows running on remote hardware.

We want to make it easy for Debian contributors to leverage all the great
QA tools that Debian provides. We want to improve and modernize Debian's
build infrastructure, while also enabling distribution-wide experiments,
custom package repositories and custom workflows with advanced package
reviews.

Analyzing lintian results is an important step in any serious package
review workflow and as such, our current milestone plans to make it
possible to run lintian on debusine workers. As lintian and QA experts, we
would love to have your feedback on our plans, in particular on the public
interface that we have designed.

To give a bit more context, as a debusine user with an API key, you can
submit "work requests". Each work request has a "task" assigned to it
(e.g. sbuild, autopkgtest, lintian) and some JSON data that gives more
details about the specific task. The structure of the JSON data varies
from task to task but it basically defines the public API that lets users
schedule work requests to debusine. The result of the work request
(including any artifact generated) will then be stored in the database and
made available for consumption by the user through the API.

As an example, here's how the data could look like for a simple lintian
work request:

{
    "input": {
        "source_artifact_id": 1234,  # References the source package to analyze
        "binary_artifact_id": 1235,  # References the set of binary packages to 
analyze
    },
    "target_distribution": "debian:unstable",
    "lintian_version": "2.116.3",  # Or minimal_lintian_version ?
    "fail_on_severity": "error",
}

We are currently drafting the expected structure of that JSON data for
lintian (and autopkgtest) work requests in this merge request and we would
appreciate if you could review it:
https://salsa.debian.org/freexian-team/debusine/-/merge_requests/300

I have left some open questions in the document and there are some
unresolved review threads that have interesting questions too.

We are aware that this duplicates work made by Lucas in the context of
UDD, but we are trying to achieve a high level of integration and sharing
worker setups across different QA tools, and duplication seems unavoidable
in that context. We are certainly eager to cooperate and make it easy for
UDD and debusine to work hand-in-hand. A future milestone will make it
easier to export distribution-wide summary of data collected through such
work requests.

We plan to provide a debusine.debian.net/org instance accessible to all
Debian developers in the near future, so you will be able to experiment
and make use of the API that you will have helped to shape.

If you have questions about debusine, don't hesitate to ask. If you are
interested to follow along and/or help, you are more than welcome to:
https://freexian-team.pages.debian.net/debusine/devel/contributing.html

Have a nice day,
  Raphaël.

PS: You might find it useful to browse the documentation to learn more about the
goals and the high level concepts:
https://freexian-team.pages.debian.net/debusine/devel/why.html
https://freexian-team.pages.debian.net/debusine/design/index.html

-- 
  ⢀⣴⠾⠻⢶⣦⠀   Raphaël Hertzog <hert...@debian.org>
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋    The Debian Handbook: https://debian-handbook.info/get/
  ⠈⠳⣄⠀⠀⠀⠀   Debian Long Term Support: https://deb.li/LTS

Reply via email to