Implement workflow orchestrators
Part of #276 (closed). Depends on #294 (closed), as well as at least some of #337 (closed).
https://freexian-team.pages.debian.net/debusine/reference/devel-blueprints/workflows.html describes subclasses of Workflow
that are in charge of orchestrating workflows by creating work requests, analyzing their results, and modifying the work request graph. For now, only some predefined workflows will be supported, as explained in https://freexian-team.pages.debian.net/debusine/explanation/concepts.html#workflows.
We should start with a single case and implement it: either the package build case without the "add to target distribution" step, or the Lintian analysis collection case if #336 (closed) is far enough along by the time we start on this.
Implementation checklist:
-
derive Workflow
fromBaseTask
(!711 (merged)) -
still require that Workflow and its subclasses take a WorkRequest in their constructor, since they have the need and the luxury of it (!711 (merged)) -
register BaseTask
subclasses bytask_type
, too, and set aTASK_TYPE
attribute on subclasses (#354 (closed)) -
require also task_type
as an argument to instantiate subclasses (#354 (closed)) -
implement WorkflowTemplate
(#294 (closed) !734 (merged)) -
implement creating a task_type=workflow
WorkRequest
from aWorkflowTemplate
and user arguments (!735 (merged)) -
implement validation of workflow parameters (!751 (merged)) -
implement WorkRequest.clean
also fortask_type=Workflow
(!757 (merged)) -
implement a concrete workflow (#353 (closed), !745 (merged), !738 (merged), #360 (closed))