- Use http://yaml-online-parser.appspot.com/ to make sure it is valid yaml. http://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 - Make sure all of your "if" lines are aligned with the "else" and "fi" lines - Recommend using tab stops (but not tab chars) everywhere for alignment - "If" blocks must be on one travis statement and have semicolons at the end of each line: ``` - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then echo "2.7"; else echo "Not 2.7"; end ``` - "If" blocks cannot contain comments - All travis commands are run with `eval` and quotes are taken as literal characters unless you wrap the whole line in quotes: `echo "hello : world"` is interpreted as `echo \"hello : world\"` `"echo 'hello : world'"` is interpreted as `echo 'hello : world'` `"echo 'hello : '$(MYVAR)'world'"` is interpreted as `echo 'hello : $(MYVAR)world'` - Use `travis_retry` before a command to have it try several times before failing (useful for installing from third party sources) - 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 12.04 is a huge help.