Implement task-configuration mechanism

Let's implement the task-configuration mechanism: see https://freexian-team.pages.debian.net/debusine/reference/devel-blueprints/task-configuration.html for the design.

Implementation plan:

  • Implement the new task-configuration collection with its task-configuration bare data item (!1592 (merged), !1588 (merged))
  • Extend BaseTaskData, BaseDynamicTaskData, WorkRequest as described in the first 3 points of the implementation plan (!1627 (merged))
  • Make use of those new fields where relevant (points 4 and 5 of the described implementation plan
    • Extend TaskDatabase to perform all the required updates on the work request (!1630 (merged))
    • Implement TaskDatabase.apply_configuration() (!1630 (merged))
    • Create the described Task.configure_on_server() (!1595 (merged))
    • Update the scheduler to call configure_on_server instead of compute_dynamic_data. (!1595 (merged))
    • Update GetNextWorkRequestView to return the new "configured_task_data" in place of the current "task_data". (!1602 (merged))
    • Show configured_task_data in views that show work requests (#707 (closed)) (!1648 (merged))
    • Provide a better comment describing BaseDynamicTaskData.configuration_context in debusine/tasks/models.py (!1627 (merged))
  • Update the sbuild task and autopkgtest tasks to properly set subject/contexts (part in !1581 (merged), #679 (closed))
  • Document subject/contexts for the tasks/workflows

The remaining tasks will be updated through another issue.

Edited by Raphaël Hertzog