Scheduling autopkgtests for reverse-dependencies
Workflow reverse_dependencies_autopkgtest
This workflow schedules autopkgtests for all the reverse-dependencies of a package in a suite.
task_data
:source_artifact
(Single lookup, required): the source package whose reverse-dependencies should be testedbinary_artifacts
(Multiple lookup, required): a list ofdebian:binary-packages
ordebian:upload
artifacts representing the binary packages whose reverse-dependencies should be testedcontext_artifacts
(Multiple lookup, optional): a list ofdebian:binary-packages
ordebian:upload
artifacts that should additionally be used to satisfy dependencies of testssuite_collection
(Single lookup, required): thedebian:suite
collection to search for reverse-dependenciesvendor
(string, required): the distribution vendor on which to run testscodename
(string, required): the distribution codename on which to run testsbackend
(string, optional): see Autopkgtest taskarchitectures
(list of strings, optional): if set, only consider reverse-dependencies on any of these architecture namespackages_allowlist
(list of strings, optional): restrict tests to packages from this listpackages_denylist
(list of strings, optional): skip tests of packages from this listdebug_level
: see Autopkgtest task
The workflow searches the given suite collection for any source package where all the following conditions hold:
the name is not equal to the name of the source package being tested
the name is not listed in
packages_denylist
the name is listed in
packages_allowlist
(only tested if the field is present and set)it has binary packages built from it
either any of its binary packages depend on any of the given binary package names, or any of the given binary package names are in its
Testsuite-Triggers
field (which can be found in itsdsc_fields
data field)its
Testsuite
field has an item either equal toautopkgtest
or starting withautopkgtest-pkg
It then creates an autopkgtest sub-workflow for each one, with task data as follows:
prefix
:{source_artifact.name}_{source_artifact.version}/
source_artifact
: the source package to testbinary_artifacts
: the binary packages built from that source packagecontext_artifacts
:{binary_artifacts}
(the binary packages whose reverse-dependencies are being tested) plus{context_artifacts}
(any other binary packages used to satisfy dependencies of tests)vendor
,codename
,backend
,architectures
,debug_level
: copied from workflow task data parameters of the same names
Any of the lookups in binary_artifacts
or context_artifacts
may
result in promises, and in that case the workflow
adds corresponding dependencies.
As usual, the workflow as a whole will succeed only if all the sub-workflows
succeed. Individual results are available in the workflow’s internal
collection: for example, a sub-workflow that tests debusine 0.5.0 on amd64
and arm64 will provide the items debusine_0.5.0/autopkgtest-amd64
and
debusine_0.5.0/autopkgtest-arm64
.
Todo
We will probably need the ability to control parameters such as
fail_on
in sub-workflows, but these are often quite
package-specific. This may need to be handled via pipeline instructions
rather than via this workflow’s task data.
Todo
This workflow does not currently handle checking for regressions against a base reference.