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 WorkflowfromBaseTask(!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 BaseTasksubclasses bytask_type, too, and set aTASK_TYPEattribute on subclasses (#354 (closed)) -
require also task_typeas an argument to instantiate subclasses (#354 (closed)) -
implement WorkflowTemplate(#294 (closed) !734 (merged)) -
implement creating a task_type=workflowWorkRequestfrom aWorkflowTemplateand user arguments (!735 (merged)) -
implement validation of workflow parameters (!751 (merged)) -
implement WorkRequest.cleanalso fortask_type=Workflow(!757 (merged)) -
implement a concrete workflow (#353 (closed), !745 (merged), !738 (merged), #360 (closed))