Come posso installare qualcosa su Travis CI senza un timeout?

Sto provando a testare un pacchetto su travis-ci.org, ma mi trovo contro un timeout con pip install scipy:

Installing collected packages: scipy Running setup.py install for scipy Running command /home/travis/virtualenv/python2.6.9/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-Fn2gmJ/scipy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-hWDx9L-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/travis/virtualenv/python2.6.9/include/site/python2.6 No output has been received in the last 10 minutes, this potentially indicates a stalled build or something wrong with the build itself. The build has been terminated 

(estratto da un registro di build recente).

Come posso build scipy> = 0.11 su Travis senza un timeout?

La soluzione è semplice. Basta aggiungere il comando di installazione a travis_wait . Maggiori dettagli sono disponibili su https://docs.travis-ci.com/user/common-build-problems .

Il timeout predefinito per comando su Travis è di 10 minuti e quando si utilizza solo la funzione travis_wait , il timeout è di 20 minuti. Se la build deve attendere più di 20 minuti, è ansible passare un numero di minuti per funzionare travis_wait , ad esempio:

 - travis_wait 30 pip install scipy 

Questa è una funzione non documentata in Travis, ma è suggerita da Hiro Asari di Travis su github .

Potresti anche usare un approccio da qui , se usare i comandi come travis_wait fornito da Travis CI non è un’opzione.

Nel mio caso volevo mantenere in esecuzione Travis mentre definivo i passaggi in script di shell separati in cui non avevo idea di come usare i comandi forniti da Travis. L’approccio sopra ha funzionato abbastanza bene (se interessati vedi la richiesta di pull ).