Below is a high-level overview of what happens when a job is reproduced. The code for these steps are located in {travis,github}-reproducer/pipeline/
. Read the source comments in that directory for details that are not described here, including checking for skipping, storing temporary files for reuse, etc.
- Copy and reset the repository: The repository is copied to a temporary directory and reset to the commit hash of the job to be reproduced.
- Generate the build script: Based on the job's configuration, a shell script is generated that will be used to build the project.
- Generate the Dockerfile: A Dockerfile is generated that will be used to build the Docker image. The base image is determined by the job's configuration.
The Docker image is built using the generated Dockerfile.
The reproduced log is analyzed by Analyzer and compared with the original log.