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-packagesordebian:uploadartifacts representing the binary packages whose reverse-dependencies should be testedcontext_artifacts(Multiple lookup, optional): a list ofdebian:binary-packagesordebian:uploadartifacts that should additionally be used to satisfy dependencies of testssuite_collection(Single lookup, required): thedebian:suitecollection 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 taskextra_repositories(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: allpackagespackages_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 computes dynamic metadata as:
subject: package name of
source_artifact
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_denylistthe 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-Triggersfield (which can be found in itsdsc_fieldsdata field)its
Testsuitefield has an item either equal toautopkgtestor 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).