我正在使用travis CI构建WebRTC库。
这运行良好,但需要大量时间,并且构建越来越频繁地以以下消息结束:
作业超出了作业的最大时间限制,并且 终止。
您可以查阅失败的日志 travis 日志
gclient sync
期间:
_______ running 'download_from_google_storage --directory --recursive --num_threads=10 --no_auth --quiet --bucket chromium-webrtc-resources src/resources' in '/home/travis/build/mpromonet/webrtc-streamer/webrtc'
...
Hook 'download_from_google_storage --directory --recursive --num_threads=10 --no_auth --quiet --bucket chromium-webrtc-resources src/resources' took 1255.11 secs
我禁用了测试,所以我认为这是无用的,需要很多时间。
无论如何,是否有一些参数或设置一些变量来避免这项耗时昂贵的任务?
一种不下载依赖项中定义的chromium-webrtc-resources
的方法 DEPS
{
# Download test resources, i.e. video and audio files from Google Storage.
'pattern': '.',
'action': ['download_from_google_storage',
'--directory',
'--recursive',
'--num_threads=10',
'--no_auth',
'--quiet',
'--bucket', 'chromium-webrtc-resources',
'src/resources'],
},
是将其缓存删除此部分或添加 false 的条件。
为了打补丁,我使用了以下命令:
sed -i -e "s|'src/resources'],|'src/resources'],'condition':'rtc_include_tests==true',|" src/DEPS
这样可以节省大约 20mn 并允许 travis 构建保持在超时以下。
您可以将整个工具链烘焙到 docker 映像中,并在其中运行实际的测试/构建。将 docker 映像更新委托给另一个自动化进程(例如 travis-ci cronjob)。
另一个好处是,您现在可以完全控制工具链的某些部分何时更改。我觉得这非常重要。
编辑:一些要阅读的资源。
- 使用 docker 的官方 travis 文档
- 在 travis 上构建和部署映像
- Dockerhub自动化构建