The Rust Log Analyzer (RLA) is a tool that analyzes the CI build logs of the rust-lang/rust repository with the purpose of automatically extracting error messages from failed builds.
This repository contains three components:
rust_log_analyzer
library, which contains the analysis logic.rla-offline
binary, a collection of various tools to run the analyzer off-line (see the output of rla-offline --help
for available commands).rla-server
binary, a web server which receives GitHub webhooks and automatically posts analysis results to the Rust repository.RLA uses the log
crate to write all output. By default, anything logged at INFO
or higher will be printed. You can change this behavior by setting the RLA_LOG
environment variable, using the syntax specified by the env_logger
crate.
To run commands which access online resources, you have to provide the required authentication information in environment variables:
GITHUB_TOKEN
to a personal access token with at least "repo" scope.To initialize a new index file, perform the following steps:
rla-offline dl
command.
release
mode.rla-offline dl --ci actions --repo rust-lang/rust -c 40 --branch auto --passed -o data/training
rla-offline learn command
.
rla-offline learn --ci actions -i demo.idx data/training
rla-offline dl
command or manually from your CI provider.
.brotli
, or assume uncompressed data otherwise.rla-offline extract-one
command analyze the log file.
rla-offline extract-one --ci actions -i demo.idx my-log.txt
Note: This process will / should be integrated as regression tests.
rla-offline dl --ci actions --repo rust-lang/rust -c 50 --failed -o data/failed
rla-offline extract-dir
command to analyze all the log files and write the results to a separate directory.
rla-offline extract-dir --ci actions -i demo.idx -s data/failed -d data/err
The index file can be stored either in the local filesystem (by providing the
absolute or relative path to the file) or in S3 (by providing a
s3://{bucket}/{key}
URL). The S3 region of the bucket is detected
automatically at startup.