Skip to content

Make it easier to reproduce CI steps #59640

@potiuk

Description

@potiuk

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 build and breeze ci-image load in this case
  • convert all the environment variables that are passed to CI jobs and steps into --flags including 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

No one assigned

    Labels

    area:CIAirflow's tests and continious integration

    Type

    No type

    Projects

    Status

    Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions