Task configuration
Introduction
The behaviour of workflows and tasks is conditioned on the input data that they are fed by users and parent workflows.
Task configuration is a mechanism available to workspace
owners to influence the input data before the task is scheduled
to run on a worker: Debusine will look up the task_configuration
field in the work request to identify a
debusine:task-configuration collection and will apply
the instructions contained in that collection.
Note
In most cases, the task_configuration field is unset and
its default value (default@debusine:task-configuration) will
be used.
Caution
Task configuration can greatly influence the behaviour of the
workflows and tasks. As such, when you create a workflow template,
you should likely not allow users to override the value of
the task_configuration field to make it point to a collection
that they control.
Modifications to collections are restricted to workspace owners, so users with the “workspace contributor” role will not be able to modify task configuration.
Use cases
Manage special cases and exceptions
When you maintain a complete distribution like Debian or one of its derivatives, you have to deal with special cases and exceptions, for example:
disable build/autopkgtest/etc. of a package on a specific architecture because it kills the workers
restrict the build/autopkgtest/etc. of a package to specific workers where the build is known to succeed
schedule a package only on workers with specific hardware requirements
etc.
Control fields that are not set by workflows
Many tasks offer multiple parameters that you cannot influence through the parameters of the top-level workflow that you control. With task configuration, it is possible to overcome that limitation and inject values directly at the level of specific tasks.
Override fields that are set by workflows
Workflows typically make some opinionated choices on the parameters that they pass to their child work requests. In some cases, you might want to make different choices and override the values provided by the workflows. Task configuration enables this.
More documentation
Manage task configuration covers how to create and maintain task configuration with YAML files in a git repository. It provides meaningful examples covering all the fields available in entries.
Task configuration is the reference documentation going into details about how task configuration is implemented.