Handle non-syntax errors from Ansible
If a playbook refers to a role that does not exist, Ansible will output
"ERROR!" followed by an error. Such as:
ERROR! the role 'add-launchpadlib-credentials' was not found in ...
The error appears to have been in '...':
line 5, column 7, but may be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- add-sshkey
- add-launchpadlib-credentials
^
here
Simply adding the error to the build log will help people track down the
issue.
Change-Id: If49c50c16844243cbbade4b7fef7a43df4107d43
diff --git a/zuul/executor/server.py b/zuul/executor/server.py
index b19d23c..28ac5a5 100644
--- a/zuul/executor/server.py
+++ b/zuul/executor/server.py
@@ -1697,6 +1697,13 @@
elif ret == -9:
# Received abort request.
return (self.RESULT_ABORTED, None)
+ elif ret == 1:
+ if syntax_buffer[0].startswith('ERROR!'):
+ with open(self.jobdir.job_output_file, 'a') as job_output:
+ for line in syntax_buffer:
+ job_output.write("{now} | {line}\n".format(
+ now=datetime.datetime.now(),
+ line=line.decode('utf-8').rstrip()))
elif ret == 4:
# Ansible could not parse the yaml.
self.log.debug("Ansible parse error")