[infra] Print additional information for build/coverage failures on GCB (#3104). (#3208)

* [infra] Explicily print failing build config in the GCB log (#3104).

* add trailing "false" command + add a message for misisng coprus backups in code coverage build

* improve the coverage message and behavior

* fix exit command

* use .format() for a single argument format string too

* fix typo
This commit is contained in:
Max Moroz 2020-01-09 09:41:58 -08:00 committed by GitHub
parent 7cfb7aab73
commit cfe13cb116
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 4 deletions

View File

@ -176,7 +176,14 @@ def get_build_steps(project_dir):
'args': [ 'args': [
'bash', 'bash',
'-c', '-c',
'for f in /corpus/*.zip; do unzip -q $f -d ${f%%.*}; done && coverage', ('for f in /corpus/*.zip; do unzip -q $f -d ${f%%.*} || '
'echo "Failed to unpack the corpus for $(basename ${f%%.*}). '
'This usually means that corpus backup for a particular fuzz '
'target does not exist. If a fuzz target was added in the last '
'24 hours, please wait one more day. Otherwise, something is '
'wrong with the fuzz target or the infrastructure, and corpus '
'pruning task does not finish successfully." && exit 1; '
'done && coverage')
], ],
'volumes': [{'name': 'corpus', 'path': '/corpus'}], 'volumes': [{'name': 'corpus', 'path': '/corpus'}],
} }

View File

@ -236,6 +236,8 @@ def get_build_steps(project_dir):
if not workdir: if not workdir:
workdir = '/src' workdir = '/src'
failure_msg = ('FAILED IN THE FOLLOWING CONFIG: --sanitizer {0} '
'--engine {1}').format(sanitizer, fuzzing_engine)
build_steps.append( build_steps.append(
# compile # compile
{ {
@ -251,8 +253,9 @@ def get_build_steps(project_dir):
# `cd /src && cd {workdir}` (where {workdir} is parsed from # `cd /src && cd {workdir}` (where {workdir} is parsed from
# the Dockerfile). Container Builder overrides our workdir # the Dockerfile). Container Builder overrides our workdir
# so we need to add this step to set it back. # so we need to add this step to set it back.
'rm -r /out && cd /src && cd {1} && mkdir -p {0} && compile' ('rm -r /out && cd /src && cd {1} && mkdir -p {0} && '
.format(out, workdir), 'compile || echo "build_fuzzers {2}" && false')
.format(out, workdir, failure_msg),
], ],
}) })
@ -276,7 +279,12 @@ def get_build_steps(project_dir):
{ {
'name': 'gcr.io/oss-fuzz-base/base-runner', 'name': 'gcr.io/oss-fuzz-base/base-runner',
'env': env, 'env': env,
'args': ['bash', '-c', 'test_all'], 'args': [
'bash',
'-c',
'test_all || echo "check_build {0}" && false'.format(
failure_msg)
],
}) })
if project_yaml['labels']: if project_yaml['labels']: