summaryrefslogtreecommitdiff
path: root/devops/dockerfiles
diff options
context:
space:
mode:
authorMonika Forstner <Monika_Forstner@mentor.com>2020-09-16 10:20:03 +0200
committerMonika Forstner <Monika_Forstner@mentor.com>2020-09-16 10:50:27 +0200
commit2fb502b4bc23aa13fee1db3395b3cae5e34cc871 (patch)
treed9cd2c64522f190500dc53291b4fbcf5100b9720 /devops/dockerfiles
parent253d10aada6bf5cdfe307aaff55363f08194c85e (diff)
downloadnode-state-manager-release_NSM_CommonAPI.tar.gz
NSM Release 3.0release_NSM_CommonAPI
Diffstat (limited to 'devops/dockerfiles')
-rw-r--r--devops/dockerfiles/Dockerfile_genivi_nsm_dev163
-rw-r--r--devops/dockerfiles/README65
2 files changed, 228 insertions, 0 deletions
diff --git a/devops/dockerfiles/Dockerfile_genivi_nsm_dev b/devops/dockerfiles/Dockerfile_genivi_nsm_dev
new file mode 100644
index 0000000..4a51e01
--- /dev/null
+++ b/devops/dockerfiles/Dockerfile_genivi_nsm_dev
@@ -0,0 +1,163 @@
+#######################################################################################################################
+#
+# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH
+#
+# Author: Vignesh_Rajendran@mentor.com
+#
+# Dockerfile to have an environment to build and run the NSM in
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# (!) The scope of this license statement is only the Dockerfile and not the container image
+#
+#######################################################################################################################
+
+FROM ubuntu:20.04
+
+ARG PATH_GIT=/tmp/git
+
+ENV TZ="Europe/Berlin"
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+ENV container docker
+ENV LC_ALL C
+ENV DEBIAN_FRONTEND noninteractive
+ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
+
+RUN sed -i 's/# deb/deb/g' /etc/apt/sources.list
+
+RUN apt-get update
+
+RUN apt-get install -y \
+ apt-utils \
+ build-essential \
+ curl \
+ git \
+ pkg-config \
+ wget \
+ libdbus-1-dev
+
+RUN apt-get install -y \
+ asciidoc \
+ doxygen \
+ googletest \
+ graphviz \
+ libboost-all-dev \
+ libglib2.0-dev \
+ libgtest-dev \
+ libsystemd-dev \
+ openjdk-8-jdk \
+ source-highlight \
+ zlib1g-dev
+
+RUN apt-get install -y systemd systemd-sysv \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+
+RUN cd /lib/systemd/system/sysinit.target.wants/ \
+ && ls | grep -v systemd-tmpfiles-setup | xargs rm -f $1
+
+RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
+ /etc/systemd/system/*.wants/* \
+ /lib/systemd/system/local-fs.target.wants/* \
+ /lib/systemd/system/sockets.target.wants/*udev* \
+ /lib/systemd/system/sockets.target.wants/*initctl* \
+ /lib/systemd/system/basic.target.wants/* \
+ /lib/systemd/system/anaconda.target.wants/* \
+ /lib/systemd/system/plymouth* \
+ /lib/systemd/system/systemd-update-utmp*
+
+VOLUME [ "/sys/fs/cgroup" ]
+
+CMD ["/lib/systemd/systemd"]
+
+RUN useradd -ms /bin/bash genivi
+
+RUN mkdir -p $PATH_GIT
+
+WORKDIR $PATH_GIT
+RUN wget http://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
+RUN tar xzf cmake-3.10.3.tar.gz
+WORKDIR cmake-3.10.3
+RUN ./bootstrap
+RUN make
+RUN make install
+
+WORKDIR /usr/src/googletest/
+RUN mkdir build
+WORKDIR /usr/src/googletest/build
+RUN cmake ..
+RUN make
+RUN make install
+
+ARG GENIVI_VSOMEIP="vsomeip"
+ARG GENIVI_VSOMEIP_VERSION="3.1.14.1"
+
+ARG GENIVI_DLT_DAEMON="dlt-daemon"
+ARG GENIVI_DLT_DAEMON_VERSION="v2.18.4"
+
+ARG GENIVI_CAPICXX_CORE_RUNTIME="capicxx-core-runtime"
+ARG GENIVI_CAPICXX_CORE_RUNTIME_VERSION="3.1.12.6"
+
+ARG GENIVI_CAPICXX_SOMEIP_RUNTIME="capicxx-someip-runtime"
+ARG GENIVI_CAPICXX_SOMEIP_RUNTIME_VERSION="3.1.12.17"
+
+WORKDIR $PATH_GIT
+RUN git clone https://github.com/GENIVI/$GENIVI_VSOMEIP.git
+WORKDIR $PATH_GIT/$GENIVI_VSOMEIP
+RUN git checkout -b $GENIVI_VSOMEIP_VERSION $GENIVI_VSOMEIP_VERSION
+RUN mkdir build
+WORKDIR $PATH_GIT/$GENIVI_VSOMEIP/build
+RUN cmake -DENABLE_COMPAT=ON ..
+RUN make
+RUN make install
+
+WORKDIR $PATH_GIT
+RUN git clone https://github.com/GENIVI/$GENIVI_DLT_DAEMON.git
+WORKDIR $PATH_GIT/$GENIVI_DLT_DAEMON
+RUN git checkout -b $GENIVI_DLT_DAEMON_VERSION $GENIVI_DLT_DAEMON_VERSION
+RUN mkdir build
+WORKDIR $PATH_GIT/$GENIVI_DLT_DAEMON/build
+RUN cmake -D WITH_DLT_PKGCONFIG=ON -D WITH_SYSTEMD=ON -D WITH_SYSTEMD_WATCHDOG=ON -D WITH_SYSTEMD_JOURNAL=ON -D WITH_DLT_DBUS=ON ..
+RUN make
+RUN make install
+RUN ldconfig
+
+WORKDIR $PATH_GIT
+RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_CORE_RUNTIME.git
+WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_RUNTIME
+RUN git checkout -b $GENIVI_CAPICXX_CORE_RUNTIME_VERSION $GENIVI_CAPICXX_CORE_RUNTIME_VERSION
+RUN mkdir build
+WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_RUNTIME/build
+RUN cmake ..
+RUN make
+RUN make install
+
+WORKDIR $PATH_GIT
+RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_SOMEIP_RUNTIME.git
+WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_RUNTIME
+RUN git checkout -b $GENIVI_CAPICXX_SOMEIP_RUNTIME_VERSION $GENIVI_CAPICXX_SOMEIP_RUNTIME_VERSION
+RUN mkdir build
+WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_RUNTIME/build
+RUN cmake -D USE_INSTALLED_COMMONAPI=ON ..
+RUN make
+RUN make install
+
+# WORKDIR $PATH_GIT
+# RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_CORE_TOOLS.git
+# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_TOOLS
+# RUN git checkout -b $GENIVI_CAPICXX_CORE_TOOLS_VERSION $GENIVI_CAPICXX_CORE_TOOLS_VERSION
+# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_TOOLS/org.genivi.commonapi.core.releng
+# RUN mvn -Dtarget.id=org.genivi.commonapi.core.target clean verify
+
+# WORKDIR $PATH_GIT
+# RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_SOMEIP_TOOLS.git
+# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_TOOLS
+# RUN git checkout -b $GENIVI_CAPICXX_SOMEIP_TOOLS_VERSION $GENIVI_CAPICXX_SOMEIP_TOOLS_VERSION
+# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_TOOLS/org.genivi.commonapi.someip.releng
+# RUN mvn -DCOREPATH=.. -Dtarget.id=org.genivi.commonapi.someip.target clean verify
+
+# RUN rm -rf $PATH_GIT
+
+WORKDIR /home
diff --git a/devops/dockerfiles/README b/devops/dockerfiles/README
new file mode 100644
index 0000000..9cea47d
--- /dev/null
+++ b/devops/dockerfiles/README
@@ -0,0 +1,65 @@
+To build the docker image on your local PC, clone this project and navigate to this folder. Then run
+
+ docker build --tag <docker_image_name> --file Dockerfile_genivi_nsm_dev .
+
+The image <docker_image_name> will be created and stored in the docker registry on your local PC thus.
+
+Let's assume there is a <working> folder on your local PC (on the full path <path_working>).
+In this folder you should clone node state manager.
+
+- clone "node-state-manager"
+
+To run a docker container with the generated <docker_image_name> image, and to pull your <working> folder into the docker container in order to be able to work, run
+
+ docker run -it --name <docker_container_name> --tmpfs /tmp --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v <path_working>:/home/<working> <docker_image_name>
+
+To exit the container, just type
+
+ exit
+
+To run the same container again and continue your work, run
+
+ docker exec -it <docker_container_name> bash
+
+A few basic useful docker commands
+
+ docker images
+ docker container ls -a
+ docker rm <container_to_remove>
+ docker rmi <image_to_remove>
+
+
+---
+
+To work on the "node-state-manager", run/start the container.
+
+Before you can compile the NSM, you need to generate and build the necessary CommonAPI interfaces.
+The interfaces and a CMake project for generating and building them can be found in NodeStateAccess/interfaces/.
+(Note that this requires the CommonAPI and SomeIP code generators. You will need to clone the commonapi-core-tools and
+commonapi-someip-tools repositories from GENIVI and build them from there. Find instructions on how to do this in their
+respective READMEs.)
+
+To build "node-state-manager" with cmake:
+
+ cd /home/<working>/node-state-manager
+ git checkout -b <right_branch>
+ mkdir build
+ cd build
+ cmake .. # disable/enable options according to your needs
+ make
+ make install
+
+ # To run tests
+ ctest
+
+ # To run Coverage
+ ctest -T Test -T Coverage
+
+---
+
+This Dockerfile is developed with
+
+ $ docker --version
+ Docker version 19.03.12, build 48a66213fe
+
+The parameters presented above may vary according to the installed docker version on your local PC.