mirror of
https://github.com/eclipse/upm.git
synced 2025-07-26 21:51:16 +03:00
travis: improve build process and expand build matrix
Make a build heriarchy to reduce images size. Add Android Things builds to build matrix. Drop gcc-4 builds, use gcc-5 and gcc-6 instead. Add SonarQube static analysis scans. Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
This commit is contained in:
67
docker/Dockerfile.android
Normal file
67
docker/Dockerfile.android
Normal file
@ -0,0 +1,67 @@
|
||||
FROM upm-java
|
||||
|
||||
WORKDIR /opt
|
||||
|
||||
# Install CMake 3.6.2
|
||||
RUN wget -q https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.sh && \
|
||||
mkdir /opt/cmake && \
|
||||
sh /opt/cmake-3.6.2-Linux-x86_64.sh --prefix=/opt/cmake --skip-license && \
|
||||
ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake && \
|
||||
cmake --version && \
|
||||
rm -fr /opt/cmake-3.6.2-Linux-x86_64.sh
|
||||
|
||||
# Android NDK build Dependencies
|
||||
RUN wget -q https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip && \
|
||||
unzip -qq android-ndk-r14b-linux-x86_64.zip && \
|
||||
rm -fr android-ndk-r14b-linux-x86_64.zip
|
||||
ENV NDK_HOME /opt/android-ndk-r14b
|
||||
ENV NDK_MODULE_PATH /opt/android-ndk-r14b
|
||||
|
||||
# Android Things library
|
||||
RUN wget -q https://github.com/androidthings/native-libandroidthings/archive/0.4.1-devpreview.tar.gz && \
|
||||
tar xf 0.4.1-devpreview.tar.gz && \
|
||||
rm -fr /opt/0.4.1-devpreview.tar.gz
|
||||
ENV ANDROIDTHINGS_NATIVE_LIB /opt/native-libandroidthings-0.4.1-devpreview
|
||||
|
||||
# Build Mraa For Android Things
|
||||
RUN git clone --depth 1 https://github.com/intel-iot-devkit/mraa.git && \
|
||||
cd mraa && \
|
||||
cmake \
|
||||
-DANDROID_COMPILER_FLAGS_CXX='-std=c++11' \
|
||||
-DANDROID_PIE=1 \
|
||||
-DANDROID_PLATFORM=android-24 \
|
||||
-DANDROID_STL_FORCE_FEATURES=on \
|
||||
-DANDROID_STL=c++_shared \
|
||||
-DANDROID_TOOLCHAIN_NAME=x86-i686 \
|
||||
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
|
||||
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
||||
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
|
||||
-DCMAKE_FIND_ROOT_PATH=$NDK_HOME/platforms/android-24/arch-x86/ \
|
||||
-DCMAKE_MODULE_PATH=$ANDROIDTHINGS_NATIVE_LIB \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \
|
||||
-DCMAKE_INSTALL_PREFIX=/opt/mraa/install \
|
||||
-DJAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include \
|
||||
-DJAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64/libjawt.so \
|
||||
-DJAVA_INCLUDE_PATH=$JAVA_HOME/include \
|
||||
-DJAVA_INCLUDE_PATH2=$JAVA_HOME/include/linux \
|
||||
-DJAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/amd64/server/libjvm.so \
|
||||
-DBUILDARCH=PERIPHERALMAN \
|
||||
-DJSONPLAT=OFF \
|
||||
-DBUILDDOC=OFF \
|
||||
-DBUILDSWIG=ON \
|
||||
-DBUILDSWIGPYTHON=OFF \
|
||||
-DBUILDSWIGNODE=OFF \
|
||||
-DBUILDSWIGJAVA=ON \
|
||||
-DENABLEEXAMPLES=OFF \
|
||||
-DINSTALLGPIOTOOL=OFF \
|
||||
-DINSTALLTOOLS=OFF \
|
||||
-DBUILDTESTS=OFF \
|
||||
-H. \
|
||||
-Bbuild && \
|
||||
make -j8 -Cbuild install
|
||||
ENV MRAA_INSTALL_DIR /opt/mraa/install
|
||||
|
||||
# Set Workdir
|
||||
WORKDIR $UPM_SRC_DIR
|
||||
|
||||
CMD bash
|
68
docker/Dockerfile.base
Normal file
68
docker/Dockerfile.base
Normal file
@ -0,0 +1,68 @@
|
||||
FROM ubuntu:16.04
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
# Prepare apt-get
|
||||
RUN apt-get update && apt-get -y --no-install-recommends install software-properties-common
|
||||
|
||||
# Add Mraa Repository
|
||||
RUN add-apt-repository ppa:mraa/mraa && \
|
||||
# Update apt-get
|
||||
apt-get -y update && \
|
||||
# Install apt-utils
|
||||
apt-get -y --no-install-recommends install apt-utils && \
|
||||
# Main Build Dependencies
|
||||
apt-get -y --no-install-recommends install git build-essential cmake swig clang-3.8 gcc-5 g++-5 libpthread-stubs0-dev pkg-config wget unzip \
|
||||
# Mraa Build Dependencies
|
||||
libmraa1 libmraa-dev mraa-tools \
|
||||
# Docs Build Dependencies
|
||||
python-sphinx doxygen graphviz \
|
||||
# Sensor Specific Build Dependencies
|
||||
libjpeg-dev
|
||||
|
||||
# Test Build Dependencies
|
||||
RUN apt-get -y --no-install-recommends install python python-dev python-pip && \
|
||||
pip install chardet
|
||||
|
||||
# Install gcc-6 g++-6
|
||||
RUN add-apt-repository ppa:ubuntu-toolchain-r/test && \
|
||||
apt-get update && \
|
||||
apt-get -y --no-install-recommends install gcc-6 g++-6
|
||||
|
||||
WORKDIR /opt
|
||||
|
||||
# Install libbacnet 0.3.12
|
||||
RUN wget https://downloads.sourceforge.net/project/bacnet/bacnet-stack/bacnet-stack-0.8.3/bacnet-stack-0.8.3.zip && \
|
||||
unzip -qq bacnet-stack-0.8.3.zip && cd bacnet-stack-0.8.3 && \
|
||||
BACDL_DEFINE=-DBACDL_MSTP=1 MAKE_DEFINE=-fPIC make clean all && \
|
||||
cp /opt/bacnet-stack-0.8.3/lib/libbacnet.a /usr/lib/libbacnet.a && \
|
||||
echo "prefix=/usr" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "exec_prefix=\${prefix}" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "libdir=\${exec_prefix}/lib" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "includedir=\${exec_prefix}/include" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "Name: bacnet" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "Description: BACnet library" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "Version: 0.8.3" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "Libs: -L\${libdir} -lbacnet" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
echo "Cflags: -I\${includedir}/bacnet" >> /usr/lib/pkgconfig/libbacnet.pc && \
|
||||
mkdir /usr/include/bacnet && \
|
||||
cp /opt/bacnet-stack-0.8.3/include/* /usr/include/bacnet/ && \
|
||||
rm -fr /opt/bacnet-stack-0.8.3.zip
|
||||
|
||||
# Install libmodbus 3.1.4
|
||||
RUN wget http://libmodbus.org/releases/libmodbus-3.1.4.tar.gz && \
|
||||
tar xf libmodbus-3.1.4.tar.gz && cd libmodbus-3.1.4 && \
|
||||
./configure && make -j8 && make install && \
|
||||
rm -fr /opt/libmodbus-3.1.4.tar.gz
|
||||
|
||||
# Install openzwave
|
||||
RUN apt-get update && apt-get -y --no-install-recommends install libudev-dev && \
|
||||
git clone --depth 1 https://github.com/OpenZWave/open-zwave.git && cd open-zwave && make -j8 install && \
|
||||
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/openzwave.conf
|
||||
|
||||
# Set Workdir
|
||||
ARG UPM_SRC_DIR=/usr/src/app
|
||||
ENV UPM_SRC_DIR $UPM_SRC_DIR
|
||||
WORKDIR $UPM_SRC_DIR
|
||||
|
||||
CMD bash
|
15
docker/Dockerfile.java
Normal file
15
docker/Dockerfile.java
Normal file
@ -0,0 +1,15 @@
|
||||
FROM upm-base
|
||||
|
||||
# Update apt-get
|
||||
RUN apt-get -y update && \
|
||||
# Java Build Dependencies
|
||||
apt-get -y --no-install-recommends install libmraa-java \
|
||||
default-jre default-jdk
|
||||
|
||||
# Configure Java Home
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||
|
||||
# Set Workdir
|
||||
WORKDIR $UPM_SRC_DIR
|
||||
|
||||
CMD bash
|
17
docker/Dockerfile.node
Normal file
17
docker/Dockerfile.node
Normal file
@ -0,0 +1,17 @@
|
||||
FROM upm-base
|
||||
|
||||
WORKDIR /opt
|
||||
|
||||
# Node.js Build Dependencies
|
||||
RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
|
||||
ENV NVM_DIR /root/.nvm
|
||||
ARG NODE_VERSION
|
||||
RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
|
||||
npm install -g node-gyp && node-gyp install
|
||||
ENV PATH $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
|
||||
|
||||
# Set Workdir
|
||||
WORKDIR $UPM_SRC_DIR
|
||||
|
||||
CMD bash
|
||||
|
16
docker/Dockerfile.python
Normal file
16
docker/Dockerfile.python
Normal file
@ -0,0 +1,16 @@
|
||||
FROM upm-base
|
||||
|
||||
# Update apt-get
|
||||
RUN apt-get -y update && \
|
||||
# Python Build Dependencies
|
||||
apt-get -y --no-install-recommends install python-mraa python3-mraa \
|
||||
python python-dev python3 python3-dev python-pip python3-pip
|
||||
|
||||
# Install Python Test Dependencies
|
||||
RUN pip install chardet && pip3 install chardet
|
||||
|
||||
# Set Workdir
|
||||
WORKDIR $UPM_SRC_DIR
|
||||
|
||||
CMD bash
|
||||
|
41
docker/Dockerfile.sonar
Normal file
41
docker/Dockerfile.sonar
Normal file
@ -0,0 +1,41 @@
|
||||
FROM upm-base
|
||||
|
||||
# Update apt-get
|
||||
RUN apt-get -y update && \
|
||||
# Python Build Dependencies
|
||||
apt-get -y --no-install-recommends install python-mraa python3-mraa \
|
||||
python python-dev python3 python3-dev python-pip python3-pip \
|
||||
# Java Build Dependencies
|
||||
libmraa-java default-jre default-jdk
|
||||
|
||||
# Set JAVA_HOME
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||
|
||||
WORKDIR /opt
|
||||
|
||||
# Install Python Test Dependencies
|
||||
RUN pip install chardet && pip3 install chardet
|
||||
|
||||
# Node.js Build Dependencies
|
||||
RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
|
||||
ENV NVM_DIR /root/.nvm
|
||||
ARG NODE_VERSION
|
||||
RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
|
||||
npm install -g node-gyp && node-gyp install
|
||||
ENV PATH $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
|
||||
|
||||
# Static Code Analysis Scanner
|
||||
ENV SONAR_DIR /opt/sonar
|
||||
ENV SONAR_VER "3.0.3.778"
|
||||
WORKDIR $SONAR_DIR
|
||||
RUN wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_VER}-linux.zip && \
|
||||
wget https://sonarqube.com/static/cpp/build-wrapper-linux-x86.zip && \
|
||||
unzip sonar-scanner-cli-${SONAR_VER}-linux.zip && \
|
||||
unzip build-wrapper-linux-x86.zip && \
|
||||
rm sonar-scanner-cli-${SONAR_VER}-linux.zip build-wrapper-linux-x86.zip
|
||||
ENV PATH $SONAR_DIR/sonar-scanner-${SONAR_VER}-linux/bin:$SONAR_DIR/build-wrapper-linux-x86:$PATH
|
||||
|
||||
# Set Workdir
|
||||
WORKDIR $UPM_SRC_DIR
|
||||
|
||||
CMD bash
|
Reference in New Issue
Block a user