- make_signed_source
Workflow make_signed_source
This workflow produces a source package with signed contents from a template package and some binary packages.
task_data:binary_artifacts(Multiple lookup, required): the debian:binary-package or debian:upload artifacts representing the binary packages to signsigning_template_artifacts(Multiple lookup, required): the debian:binary-package artifacts representing the binary packages to signvendor(string, required): the distribution vendor on which to signcodename(string, required): the distribution codename on which to signarchitectures(list of strings): the list of architectures that this workflow is running on, plusallpurpose(string, required): the purpose of the key to sign with; see Signkey(string, required): the fingerprint to sign with; must matchpurposesbuild_backend(string, optional): see PackageBuild
The workflow computes dynamic metadata as:
subject: source package names separated by spaces
parameter_summary: source package names separated by spaces followed by “for
vendor:codename”
Any of the lookups in binary_artifacts or signing_template_artifacts
may result in , and in that case the
workflow adds corresponding dependencies. Promises must include an
architecture field in their data, and signing template promises must
also include a binary_package_name field.
The list of architectures to run on is the list of architectures that are
present in both binary_artifacts and signing_template_artifacts,
intersected with architectures.
For each architecture and for each artifact from
signing_template_artifacts matching that architecture, the workflow
creates sub-workflows and tasks as follows, with substitutions based on its
own task data. Each one has a dependency on the previous one in sequence,
using event reactions to store output in the workflow’s internal collection
for use by later tasks:
an ExtractForSigning task, with task data:
input.template_artifact: the subset of the lookup in this workflow’ssigning_template_artifactsfor the concrete architecture in questioninput.binary_artifacts: the subset of the lookup in this workflow’sbinary_artifactsfor each ofalland the concrete architecture in question that existenvironment:{vendor}/match:codename={codename}
a Sign task, with task data:
purpose:{purpose}unsigned: the output of the previous task, from the workflow’s internal collectionkey:{key}
an AssembleSignedSource task, with task data:
environment:{vendor}/match:codename={codename}template: the subset of the lookup in this workflow’ssigning_template_artifactsfor the concrete architecture in questionsigned: the output of the previous task, from the workflow’s internal collection
an sbuild sub-workflow, with task data:
prefix:signed-source-{architecture}-{signing_template_name}|input.source_artifact: the output of the previous task, from the workflow’s internal collectioninput.extra_binary_artifacts: the subset of the lookup in this workflow’sbinary_artifactsfor each ofalland the concrete architecture in question that existtarget_distribution:{vendor}:{codename}backend:{sbuild_backend}architectures: if{architectures}is set, then{architectures}plusall
The workflow adds event reactions that cause the debian:upload
artifacts in the output for each architecture and signing template name to
be provided as signed-source-{architecture}-{signing_template_name} in
the workflow’s internal collection.
Todo
We may need to use different keys for different architectures. For example, a UEFI signing key is only useful on architectures that use UEFI, and some architectures have other firmware signing arrangements.