Changed build status "package_unavailable" to "package_install_failed" to cover more errors. Added an error message for this status. Outputs of ECG are now always created at the beginning to avoid issues with Snakemake (maybe not a good idea).
This commit is contained in:
parent
72a638cd17
commit
513b21754c
@ -120,7 +120,7 @@ The timestamp corresponds to when the result is being logged, not to when it hap
|
||||
|
||||
The following are the possible results of the build:
|
||||
- `success`: The Docker image has been built successfully.
|
||||
- `package_unavailable`: A command requested the installation of a package that is not available.
|
||||
- `package_install_failed`: A command requested the installation of a package that failed.
|
||||
- `baseimage_unavailable`: The base image needed for this container is not available.
|
||||
- `artifact_unavailable`: The artifact could not be downloaded.
|
||||
- `dockerfile_not_found`: No Dockerfile has been found in the location specified in the configuration file.
|
||||
|
@ -28,7 +28,7 @@ def analysis(input_table):
|
||||
# All build status, initialized to 0.
|
||||
# This is required to make the column of the result table deterministic,
|
||||
# so they can be determined without the header in the CSV file.
|
||||
buildstatus = {"success":0, "package_unavailable":0, "baseimage_unavailable":0, "artifact_unavailable":0, "dockerfile_not_found":0, "script_crash":0, "job_time_exceeded":0, "unknown_error":0}
|
||||
buildstatus = {"success":0, "package_install_failed":0, "baseimage_unavailable":0, "artifact_unavailable":0, "dockerfile_not_found":0, "script_crash":0, "job_time_exceeded":0, "unknown_error":0}
|
||||
for row in input_table:
|
||||
# Third column is the result:
|
||||
buildstatus[row[2]] += 1
|
||||
|
22
ecg.py
22
ecg.py
@ -164,17 +164,19 @@ def builderror_identifier(output):
|
||||
# The key is the category, the value is a tuple of error messages belonging to
|
||||
# to this category:
|
||||
build_errors = {
|
||||
"package_unavailable":("Unable to locate package"),
|
||||
"baseimage_unavailable":("manifest unknown: manifest unknown"),
|
||||
"dockerfile_not_found":("Dockerfile: no such file or directory")
|
||||
"package_install_failed":("Unable to locate package", "error: failed to compile"),
|
||||
"baseimage_unavailable":("manifest unknown: manifest unknown",),
|
||||
"dockerfile_not_found":("Dockerfile: no such file or directory",)
|
||||
}
|
||||
|
||||
# Last error found is the right one in theory:
|
||||
found_error = ""
|
||||
unknown_error = True
|
||||
for error_cat, error in build_errors.items():
|
||||
if error in output:
|
||||
unknown_error = False
|
||||
found_error = error_cat
|
||||
for error_cat, error_msgs in build_errors.items():
|
||||
for error in error_msgs:
|
||||
if error in output:
|
||||
unknown_error = False
|
||||
found_error = error_cat
|
||||
if unknown_error:
|
||||
found_error = "unknown_error"
|
||||
return found_error
|
||||
@ -437,6 +439,12 @@ def main():
|
||||
# log_path = "log.txt" # Output of the program
|
||||
# log_path = args.log_path
|
||||
|
||||
# Creating the output files to avoid complaints from Snakemake about missing
|
||||
# outputs...
|
||||
pathlib.Path(pkglist_path).touch()
|
||||
pathlib.Path(buildstatus_path).touch()
|
||||
pathlib.Path(arthashlog_path).touch()
|
||||
|
||||
# Setting up the log:
|
||||
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
|
||||
# # Old version where the script writes its own log to the given file:
|
||||
|
Loading…
Reference in New Issue
Block a user