feat(ops/pipelines): Create drvmap structure for each commit

Always create a structure that maps all targets to derivations, and
persist it as a JSON file.

This relates to some of the ideas expressed in:

https://docs.google.com/document/d/16A0a5oUxH1VoiSM8hyFyLW0WiUYpNo2e2D6FTW4BlH8/edit

The file is always uploaded to Buildkite as an artifact. This allows
for retrieving it based on the commit ID in a Buildkite GraphQL query.

By default, Buildkite stores artefacts for 6 months. Storage location
can be overridden (with custom retention) through some environment
variables, but for now at TVL the Buildkite-managed storage is fine.
See also: https://buildkite.com/docs/pipelines/artifacts

In the subsequent filtering implementation, when diffing commits
across a time-range that exceeds artefact retention time, we should
simply default to building everything.

Change-Id: I6d808461cd1c1fdd6983ba8c8ef075736d42caa7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3662
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
Vincent Ambo 2021-10-01 13:43:53 +03:00 committed by tazjin
parent 546251678a
commit 0a21da2bb4
3 changed files with 40 additions and 10 deletions

View file

@ -6,6 +6,7 @@
---
steps:
- label: ":llama:"
key: "pipeline-gen"
command: |
set -ue
@ -22,6 +23,8 @@ steps:
buildkite-agent pipeline upload $$chunk
done
buildkite-agent artifact upload pipeline/drvmap.json
# Wait for all previous steps to complete.
- wait: null
continue_on_failure: true