我有一个项目,它是opencv
库的包装器,用Rust编写。
为了能够测试它,我必须自己构建opencv
。然后我缓存它,但冷建立时间高于50分钟,工作被杀死。
这个超时怎么可能增加?例如,我每个作业超时50分钟,但我希望每10个作业有500分钟,所以我可以运行我的第一个冷启动构建,比如90分钟,然后快速构建每个10分钟。
我不知道是否可能,所以我正在寻找任何解决方法。这是我的大部分时间的脚本:
#!/bin/bash
set -eux -o pipefail
OPENCV_VERSION=${OPENCV_VERSION:-3.4.0}
URL=https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip
URL_CONTRUB=https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip
INSTALL_DIR="$HOME/usr/installed-${OPENCV_VERSION}"
if [[ ! -e INSTALL_DIR ]]; then
TMP=$(mktemp -d)
OPENCV_DIR="$(pwd)/opencv-${OPENCV_VERSION}"
OPENCV_CONTRIB_DIR="$(pwd)/opencv_contrib-${OPENCV_VERSION}"
if [[ ! -d "${OPENCV_DIR}/build" ]]; then
curl -sL ${URL} > ${TMP}/opencv.zip
unzip -q ${TMP}/opencv.zip
rm ${TMP}/opencv.zip
curl -sL ${URL_CONTRUB} > ${TMP}/opencv_contrib.zip
unzip -q ${TMP}/opencv_contrib.zip
rm ${TMP}/opencv_contrib.zip
mkdir $OPENCV_DIR/build
fi
pushd $OPENCV_DIR/build
cmake \
-D WITH_CUDA=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_java=OFF \
-D BUILD_opencv_python=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF \
-D CMAKE_INSTALL_PREFIX=$HOME/usr \
-D CMAKE_BUILD_TYPE=Release \
-D OPENCV_EXTRA_MODULES_PATH=$OPENCV_CONTRIB_DIR/modules \
-D CUDA_ARCH_BIN=5.2 \
-D CUDA_ARCH_PTX="" \
..
make -j4
make install && touch INSTALL_DIR
popd
touch $HOME/fresh-cache
fi
sudo cp -r $HOME/usr/include/* /usr/local/include/
sudo cp -r $HOME/usr/lib/* /usr/local/lib/
答案 0 :(得分:1)
这个超时怎么可能增加?
根据Travis docs不可能, 超时已修复 至 50分钟(travis- ci.org)分别 120分钟(travis-ci.com)。
您可以考虑升级travis计划。但是,真正的问题是不超时,而是在每次构建之前构建一个巨大的库的必要性。即使是强硬的缓存也可以改善这种情况,但仍然很糟糕。
有一些方法可以缩短构建时间(每个构建版本) - 最适合您的方法取决于您的具体情况。
如果你运气好,并且 PPA 发布了一个OpenCV版本,你可以use那个。 Travis运行Ubuntu 14.04 Trusty。
您始终可以自己构建OpenCV并将预构建二进制文件上传到例如。服务器或不同的Git仓库。然后Travis可以在那里下载并安装。
Docker是最好的方法。创建自定义 Docker Image 或使用现有的(有足够的)。一个好的开始是DockerHub和GitHub。此外,这种方式使您可以打包任何进一步的依赖项,编译器,... - 只需您需要的一切。
您始终可以drop an issue at Travis并要求提供OpenCV的更新版本。