Build now fails in linux (precise) even though it "exited with 0", works fine in standalone ubuntu 12.04 docker

https://travis-ci.org/github/jonmacs/jove/jobs/758492654
seems to be a failure, but the log says the build exited with 0, nothing in the log appears amiss, and the same build worked fine in xenial. I pulled down an ubuntu:12.04 docker image to my laptop, did an apt-get install for the specified packages and the script ran fine.

Any ideas what I’m doing wrong? The only hint of something wrong is at the start of the raw log, in travis prep:
indent preformatted text by 4 spaces
travis_fold:start:docker_mtu_and_registry_mirrors
[0Ktee: /etc/docker/daemon.json: No such file or directory
sudo: jsonpatch: command not found
mv: cannot move daemon.json' to /etc/docker/daemon.json’: No such file or directory
docker: unrecognized service
travis_fold:end:docker_mtu_and_registry_mirrors

Thanks,
Mark.

Re: the “Common Build Problems” document mentioned. The script log shows it executed successfully, errexit was not triggered : the jsonpatch error is not from my script, it is reported from travis code before my script begins to run. Trusty, xenial, bionic and focal all work, as does exactly the same script (with -e) on my own docker with precise (ubuntu 12.04). I also set +e when the script ends, that seems to have happened, so it should not affect travis cleanup code. Here’s an example of the same build working fine on travis precise at the last change. Travis CI - Test and Deploy Your Code with Confidence (in that older build, travis seems to succeed at killing the agent, but it seems to end more abruptly in the newer build)

I see “set +u” there, not “set +e”.

Oops, right you are, sorry I missed that. Made that set +eu and precise works fine.
(Needed the +u because some unset variable is being assumed to be blank in some epilog code in travis)
Have you considered running the travis script in a subshell so user code does not affect into travis internal logic?