update_suite

# Workflow `update_suite`

This workflow updates metadata for a single suite. Initially this will just involve generating and signing basic indexes for the suite, but later it may also generate supplementary files such as `Contents-*`.

- `task_data`:

  - `suite_collection` (Single lookup, required): the suite whose indexes should be generated

The workflow computes dynamic metadata as:

- subject: name of `suite_collection`

The workflow creates a GenerateSuiteIndexes task, with task data as follows:

- `suite_collection`: `{suite_collection}`

- `generate_at`: the transaction timestamp at which the workflow orchestrator is being run (this needs special care to preserve idempotency, since any later runs of the same workflow orchestrator would have a different transaction timestamp)

It then creates two SignRepositoryIndex tasks with dependencies on the GenerateSuiteIndexes task. They have task data as follows:

- `suite_collection`: `{suite_collection}`

- `unsigned`: the debian:repository-index artifact for the `Release` file produced by the GenerateSuiteIndexes task

- `mode`: `detached` for the first task, or `clear` for the second

- `signed_name`: `Release.gpg` for the first task, or `InRelease` for the second

These tasks each have event reactions that add the output debian:repository-index artifact to the suite at the appropriate path (`Release.gpg` or `InRelease`), setting `created_at` to the transaction timestamp at which the workflow orchestrator is being run.

The `InRelease` task depends on the `Release.gpg` task, in order that the “current” view of a suite can arrange to only show a snapshot once an `InRelease` file exists for it.

Note

We use two tasks rather than making both signatures in a single task because otherwise the event reactions would have no way of distinguishing between the two output artifacts.