- Use https://yaml-online-parser.appspot.com/ to make sure the yaml file is valid. https://lint.travis-ci.org/ is recommended elsewhere but does not give helpful error reports. - Make sure all of your "-" lines start on the same column - Use bash scripts for `before_install` and `script` or any part that has conditional statements - Make sure they are "executable" (chmod +x) - Use the following header to enable some local flags: ```bash #!/usr/bin/env bash set -ev ``` - Use the following footer to turn off the flags after the script: ``` set +ev ``` - The `-e` flag ensures that the script exits on non-zero exit from a command. - The `-v` flag will print out the command as it is read. - The `-x` flag will print out the expanded parsed command, as well as the PS4. which can be quite verbose. Use this when debugging. - Use the `retry` bash function from `before_install.sh` before a command to have it try 3 times before failing. - Use `pip install --retries N` for retrying package downloads. - Use the `section` function to start a folded section of the script. Section names must have underscores or dots instead of spaces and must be accompanied by a corresponding `section_end` call. - Feel free to cancel a build rather than waiting for it to go to completion if you have made a change to that branch. - A VM with 64bit Ubuntu 14.04 is a huge help for debugging.