-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Description
Our CI is designed in the way so that all the tests should be locally reproducible. Generally speaking (with some very weird exceptions related to resource constraints like memory, kernel used and local networking / filesystem setup) - the tests that we run in CI use breeze CI image as a base for containers where they run and they use breeze commands to run the steps.
It sometimes requires some prerequisites (like building an image) and in many cases the flags to breeze commands in CI are passed through environment variables, so it is not straightforward how to reproduce things out-of-the-box - you need to stitch together a few different sources of information.
Also, we have breeze ci-image load method that has --from-pr and --from-job parameters that can be used to pull the image that was used in CI for a given PR or job and use it locally - for even greater reproducibility because you would not need to build the image locally (providing that you run the tests on the same architecture).
It would be really great if each CI step would print the exact instructions on how to reproduce it - with all the prerequisites and such. This should be rather uncomplicated. We just need to:
- determine if image is needed (we already have that as we run appropriate check in each command)
- generate the right
breeze ci-image buildandbreeze ci-image loadin this case - convert all the environment variables that are passed to CI jobs and steps into
--flagsincluding parallelism if needed (number of cores) - clearly print in prominent place "HOW TO REPRODUCE IT LOCALLY' section - visually distinct with color and separation so that it is clearer what commands need to be run to reproduce the step.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status