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 namesarch_all_host_architecture
(string, defaults toamd64
): concrete architecture on which to run tasks forArchitecture: all
packagespackages_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
,arch_all_host_architecture
,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. Binary promises must include a
binary_names
field in their data.
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.
Todo
This workflow does not currently handle checking for regressions against a base reference.
Todo
Reverse-dependencies are not currently restricted by version (e.g. due
to versioned dependencies) or architecture (e.g. due to
architecture-restricted dependencies, or the architectures
field in
task data).