Skip to content

Commit 99dbd88

Browse files
authored
Merge pull request #131 from alicevision/docker/splitDeps
[docker] split into deps and Actions CI
2 parents 16a3fd8 + 26529e6 commit 99dbd88

File tree

4 files changed

+170
-55
lines changed

4 files changed

+170
-55
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Continuous Integration
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- develop
8+
# Skip jobs when only documentation files are changed
9+
paths-ignore:
10+
- '**.md'
11+
- '**.rst'
12+
- 'docs/**'
13+
pull_request:
14+
paths-ignore:
15+
- '**.md'
16+
- '**.rst'
17+
- 'docs/**'
18+
19+
jobs:
20+
build:
21+
runs-on: ubuntu-latest
22+
container:
23+
image: alicevision/cctag-deps:cuda10.2-ubuntu18.04
24+
env:
25+
DEPS_INSTALL_DIR: /opt/
26+
BUILD_TYPE: Release
27+
CTEST_OUTPUT_ON_FAILURE: 1
28+
steps:
29+
- uses: actions/checkout@v2
30+
31+
- name: Prepare File Tree
32+
run: |
33+
mkdir ./build
34+
mkdir ./build_as_3rdparty
35+
mkdir ../cctag_install
36+
37+
- name: Configure CMake
38+
working-directory: ./build
39+
run: |
40+
cmake .. \
41+
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
42+
-DBUILD_SHARED_LIBS:BOOL=ON \
43+
-DCMAKE_PREFIX_PATH="${DEPS_INSTALL_DIR}" \
44+
-DCMAKE_INSTALL_PREFIX:PATH=$PWD/../../cctag_install \
45+
-DWITH_CUDA:BOOL=ON
46+
47+
- name: Build
48+
working-directory: ./build
49+
run: |
50+
make -j$(nproc) install
51+
52+
- name: Unit Tests
53+
working-directory: ./build
54+
run: |
55+
make test
56+
57+
- name: Build As Third Party
58+
working-directory: ./build_as_3rdparty
59+
run: |
60+
cmake ../src/applications \
61+
-DBUILD_SHARED_LIBS:BOOL=ON \
62+
-DCMAKE_PREFIX_PATH:PATH="$PWD/../../cctag_install;${DEPS_INSTALL_DIR}"
63+
make -j8

Dockerfile

Lines changed: 6 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
ARG CUDA_TAG=9.2-devel
2-
FROM nvidia/cuda:$CUDA_TAG
1+
ARG CUDA_TAG=10.2
2+
ARG OS_TAG=18.04
3+
FROM alicevision/cctag-deps:cuda${CUDA_TAG}-ubuntu${OS_TAG}
34
LABEL maintainer="AliceVision Team [email protected]"
45

56
# use CUDA_TAG to select the image version to use
@@ -12,58 +13,10 @@ LABEL maintainer="AliceVision Team [email protected]"
1213
# then execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0))
1314
# docker run -it --runtime=nvidia cctag
1415

15-
# OS/Version (FILE): cat /etc/issue.net
16-
# Cuda version (ENV): $CUDA_VERSION
17-
18-
# System update
19-
RUN apt-get clean && apt-get update && apt-get install -y --no-install-recommends \
20-
build-essential \
21-
cmake \
22-
git \
23-
wget \
24-
unzip \
25-
yasm \
26-
pkg-config \
27-
libtool \
28-
nasm \
29-
automake \
30-
libpng12-dev \
31-
libjpeg-turbo8-dev \
32-
libboost-all-dev \
33-
ffmpeg \
34-
libavcodec-dev \
35-
libavformat-dev \
36-
libswscale-dev \
37-
libeigen3-dev \
38-
libavresample-dev \
39-
libtbb-dev \
40-
&& rm -rf /var/lib/apt/lists/*
41-
42-
WORKDIR /opt
43-
ENV OPENCV_VERSION="3.4.1"
44-
RUN wget https://github.com/opencv/opencv/archive/"${OPENCV_VERSION}".zip \
45-
&& unzip ${OPENCV_VERSION}.zip
46-
47-
WORKDIR /opt/opencv-${OPENCV_VERSION}/cmake_binary \
48-
RUN cmake -j -DBUILD_TIFF=ON \
49-
-DBUILD_opencv_java=OFF \
50-
-DWITH_CUDA=OFF \
51-
-DENABLE_AVX=ON \
52-
-DWITH_OPENGL=ON \
53-
-DWITH_IPP=ON \
54-
-DWITH_TBB=ON \
55-
-DWITH_EIGEN=ON \
56-
-DWITH_V4L=ON \
57-
-DCCTAG_BUILD_TESTS=OFF \
58-
-DBUILD_PERF_TESTS=OFF \
59-
-DCMAKE_BUILD_TYPE=RELEASE .. \
60-
&& make -j install \
61-
&& rm /opt/${OPENCV_VERSION}.zip \
62-
&& rm -r /opt/opencv-${OPENCV_VERSION}
63-
6416

6517
COPY . /opt/cctag
6618
WORKDIR /opt/cctag/build
67-
RUN cmake .. -DWITH_CUDA:BOOL=ON \
19+
RUN cmake .. -DCCTAG_WITH_CUDA:BOOL=ON \
6820
-DCMAKE_BUILD_TYPE=Release \
69-
-DOpenCV_DIR:PATH=/usr/local/share/OpenCV && make install -j
21+
-DBUILD_SHARED_LIBS:BOOL=ON \
22+
-DCMAKE_PREFIX_PATH:PATH=/opt/ && make install -j$(nproc)

Dockerfile_deps

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
ARG CUDA_TAG=10.2
2+
ARG OS_TAG=18.04
3+
FROM nvidia/cuda:${CUDA_TAG}-devel-ubuntu${OS_TAG}
4+
LABEL maintainer="AliceVision Team [email protected]"
5+
6+
# use CUDA_TAG to select the image version to use
7+
# see https://hub.docker.com/r/nvidia/cuda/
8+
#
9+
# For example, to create a ubuntu 16.04 with cuda 8.0 for development, use
10+
# docker build --build-arg CUDA_TAG=8.0 --tag alicevision/cctag-deps:cuda${CUDA_TAG}-ubuntu${OS_TAG} -f Dockerfile_deps .
11+
#
12+
# then execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0))
13+
# docker run -it --runtime=nvidia cctag_deps
14+
15+
16+
# OS/Version (FILE): cat /etc/issue.net
17+
# Cuda version (ENV): $CUDA_VERSION
18+
19+
# System update
20+
RUN apt-get clean && apt-get update && apt-get install -y --no-install-recommends \
21+
build-essential \
22+
wget \
23+
unzip \
24+
yasm \
25+
libtool \
26+
nasm \
27+
automake \
28+
libpng-dev \
29+
libjpeg-dev \
30+
ffmpeg \
31+
libssl-dev \
32+
libavcodec-dev \
33+
libavformat-dev \
34+
libswscale-dev \
35+
libavresample-dev \
36+
libtbb-dev \
37+
&& rm -rf /var/lib/apt/lists/*
38+
39+
ENV DEPS_INSTALL_PATH="/opt"
40+
41+
# Manually install cmake
42+
WORKDIR /tmp/cmake
43+
ENV CMAKE_VERSION=3.17
44+
ENV CMAKE_VERSION_FULL=${CMAKE_VERSION}.2
45+
RUN wget https://cmake.org/files/v3.17/cmake-${CMAKE_VERSION_FULL}.tar.gz && \
46+
tar zxf cmake-${CMAKE_VERSION_FULL}.tar.gz && \
47+
cd cmake-${CMAKE_VERSION_FULL} && \
48+
./bootstrap --prefix=/usr/local -- -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_USE_OPENSSL:BOOL=ON && \
49+
make -j$(nproc) install && \
50+
cd /tmp && \
51+
rm -rf cmake
52+
53+
54+
ENV BOOST_VERSION="1.70.0"
55+
ENV BOOST_VERSION_FILENAME="1_70_0"
56+
WORKDIR /tmp/boost
57+
RUN wget https://sourceforge.net/projects/boost/files/boost/${BOOST_VERSION}/boost_${BOOST_VERSION_FILENAME}.tar.gz && \
58+
tar -xzf boost_${BOOST_VERSION_FILENAME}.tar.gz && \
59+
cd boost_${BOOST_VERSION_FILENAME} && \
60+
./bootstrap.sh --with-libraries=atomic,container,date_time,exception,filesystem,graph,log,math,program_options,regex,serialization,system,test,thread,stacktrace,timer --prefix="${DEPS_INSTALL_PATH}" && \
61+
./b2 link=shared install && \
62+
cd /opt && \
63+
rm -rf /tmp/boost
64+
65+
WORKDIR /tmp/eigen
66+
ENV EIGEN_VERSION="3.3.7"
67+
RUN wget https://gitlab.com/libeigen/eigen/-/archive/${EIGEN_VERSION}/${EIGEN_VERSION}.tar.gz && \
68+
mkdir eigen-${EIGEN_VERSION} && tar xf ${EIGEN_VERSION}.tar.gz -C eigen-${EIGEN_VERSION} --strip-components 1 && \
69+
cd eigen-${EIGEN_VERSION} && \
70+
mkdir build && \
71+
cd build && \
72+
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=${DEPS_INSTALL_PATH} && \
73+
make install -j$(nproc) && \
74+
cd /opt && \
75+
rm -rf /tmp/eigen
76+
77+
# install opencv
78+
ENV OPENCV_VERSION="3.4.10"
79+
WORKDIR /tmp/opencv
80+
RUN wget https://github.com/opencv/opencv/archive/"${OPENCV_VERSION}".zip && \
81+
unzip ${OPENCV_VERSION}.zip && \
82+
mkdir -p ./opencv-${OPENCV_VERSION}/build && \
83+
cd ./opencv-${OPENCV_VERSION}/build && \
84+
cmake -DBUILD_TIFF:BOOL=ON \
85+
-DBUILD_opencv_java:BOOL=OFF \
86+
-DWITH_CUDA:BOOL=OFF \
87+
-DENABLE_AVX:BOOL=ON \
88+
-DWITH_OPENGL:BOOL=ON \
89+
-DWITH_IPP:BOOL=ON \
90+
-DWITH_TBB:BOOL=ON \
91+
-DWITH_EIGEN:BOOL=ON \
92+
-DWITH_V4L:BOOL=ON \
93+
-DBUILD_TESTS:BOOL=OFF \
94+
-DBUILD_PERF_TESTS:BOOL=OFF \
95+
-DCMAKE_INSTALL_PREFIX:PATH=${DEPS_INSTALL_PATH} \
96+
-DCMAKE_BUILD_TYPE=RELEASE .. && \
97+
make -j$(nproc) install && \
98+
cd /opt && \
99+
rm -r /tmp/opencv

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ Building
4343
See [INSTALL](INSTALL.md) text file.
4444

4545
Continuous integration:
46-
- [![Build Status](https://travis-ci.org/alicevision/CCTag.svg?branch=master)](https://travis-ci.org/alicevision/CCTag) [![Build status](https://ci.appveyor.com/api/projects/status/909b01qlixwslvmf?svg=true)](https://ci.appveyor.com/project/AliceVision/cctag) master branch.
47-
- [![Build Status](https://travis-ci.org/alicevision/CCTag.svg?branch=develop)](https://travis-ci.org/alicevision/CCTag) [![Build status](https://ci.appveyor.com/api/projects/status/909b01qlixwslvmf/branch/develop?svg=true)](https://ci.appveyor.com/project/AliceVision/cctag/branch/develop) develop branch.
46+
- [![Build Status](https://travis-ci.org/alicevision/CCTag.svg?branch=master)](https://travis-ci.org/alicevision/CCTag) [![Build status](https://ci.appveyor.com/api/projects/status/909b01qlixwslvmf?svg=true)](https://ci.appveyor.com/project/AliceVision/cctag) ![Continuous Integration](https://github.com/alicevision/CCTag/workflows/Continuous%20Integration/badge.svg?branch=master) master branch.
47+
- [![Build Status](https://travis-ci.org/alicevision/CCTag.svg?branch=develop)](https://travis-ci.org/alicevision/CCTag) [![Build status](https://ci.appveyor.com/api/projects/status/909b01qlixwslvmf/branch/develop?svg=true)](https://ci.appveyor.com/project/AliceVision/cctag/branch/develop) ![Continuous Integration](https://github.com/alicevision/CCTag/workflows/Continuous%20Integration/badge.svg?branch=develop) develop branch.
4848

4949
Running
5050
-------

0 commit comments

Comments
 (0)