1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

more CI fixes

This commit is contained in:
Steffen Vogel 2020-06-07 01:38:05 +02:00
parent 7cb45fa9fd
commit fa96d2a016
13 changed files with 221 additions and 274 deletions

View file

@ -12,57 +12,57 @@ variables:
RELEASEVER: '29'
stages:
- prepare
- build
- test
- packaging
- deploy
- prepare
- build
- test
- packaging
- deploy
# For some reason, GitLab CI prunes the contents of the submodules so we need to restore them.
before_script:
- git submodule foreach git checkout .
- git submodule foreach git checkout .
# Stage: prepare
##############################################################################
# Build docker image which is used to build & test VILLASnode
prepare:fedora:docker-dev:
.prepare:docker-dev: &prepare_docker_dev
stage: prepare
script:
- docker build ${DOCKER_OPTS}
--file ${DOCKER_FILE}
--tag ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} .
- docker build ${DOCKER_OPTS}
--file ${DOCKER_FILE}
--tag ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} .
tags:
- shell
- linux
- shell
- linux
prepare:raspbian:docker-dev:
extends: prepare:fedora:docker-dev
prepare:fedora:docker-dev:
<<: *prepare_docker_dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-raspbian
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-raspbian
DOCKER_FILE: packaging/docker/Dockerfile.dev
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev
prepare:ubuntu:docker-dev:
extends: prepare:fedora:docker-dev
<<: *prepare_docker_dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-ubuntu
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-ubuntu
prepare:centos:docker-dev:
extends: prepare:fedora:docker-dev
<<: *prepare_docker_dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-centos
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-centos
prepare:debian-armhf:docker-dev:
extends: prepare:fedora:docker-dev
<<: *prepare_docker_dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-armhf
DOCKER_OPTS: --build-arg ARCH=armhf --build-arg TRIPLET=arm-linux-gnueabihf
prepare:debian-arm64:docker-dev:
extends: prepare:fedora:docker-dev
<<: *prepare_docker_dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-arm64
@ -71,73 +71,67 @@ prepare:debian-arm64:docker-dev:
# Stage: build
##############################################################################
build:fedora:x86_64:
.build:fedora:x86_64: &build
stage: build
script:
- mkdir -p build && cd build
- cmake .. ${CMAKE_OPTS}
- make ${MAKE_OPTS}
- mkdir -p build && cd build
- cmake .. ${CMAKE_OPTS}
- make ${MAKE_OPTS}
artifacts:
expire_in: 1 week
paths:
- build/
- build/
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
- docker
- docker
build:fedora:x86_64:
<<: *build
build:fedora-minimal:x86_64:
extends: build:fedora:x86_64
<<: *build
variables:
CMAKE_OPTS: -DWITH_HOOKS=OFF -DWITH_WEB=OFF -DWITH_API=OFF -DWITH_CONFIG=OFF -DWITH_SRC=OFF -DWITH_TOOLS=OFF -DWITH_TESTS=OFF -DWITH_PLUGINS=OFF -DWITH_CLIENTS=OFF -DWITH_DOC=OFF
build:ubuntu:x86_64:
extends: build:fedora:x86_64
<<: *build
variables:
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-ubuntu
CMAKE_OPTS: -DCMAKE_MODULE_PATH=/usr/local/lib64/cmake -DCMAKE_PREFIX_PATH=/usr/local
build:centos:x86_64:
extends: build:fedora:x86_64
<<: *build
script:
- mkdir -p build && cd build
- cmake3 .. ${CMAKE_OPTS}
- make ${MAKE_OPTS}
- mkdir -p build && cd build
- cmake3 .. ${CMAKE_OPTS}
- make ${MAKE_OPTS}
variables:
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-centos
CMAKE_OPTS: -DCMAKE_MODULE_PATH=/usr/local/lib64/cmake -DCMAKE_PREFIX_PATH=/usr/local
build:raspbian:armv6l:
extends: build:fedora:x86_64
variables:
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-raspbian
CMAKE_OPTS: -DWITH_NODE_INFINIBAND=OFF
when: manual
build:debian-multiarch:armhf:
extends: build:fedora:x86_64
<<: *build
variables:
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-armhf
CMAKE_OPTS: -DCMAKE_TOOLCHAIN_FILE=/debian-armhf.cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/arm-linux-gnueabihf
build:debian-multiarch:arm64:
extends: build:fedora:x86_64
<<: *build
variables:
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-arm64
CMAKE_OPTS: -DCMAKE_TOOLCHAIN_FILE=/debian-arm64.cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/aarch64-linux-gnu
build:docs:
stage: build
artifacts:
name: ${CI_PROJECT_NAME}-doc-${CI_BUILD_REF}
paths:
- build/doc/
- build/doc/
script:
- mkdir -p build && cd build
- cmake ..
- make ${MAKE_OPTS} doc
- mkdir -p build && cd build
- cmake ..
- make ${MAKE_OPTS} doc
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
- docker
- docker
# Stage: test
@ -154,46 +148,47 @@ test:flake8:
test:unit:
stage: test
dependencies:
- build:fedora:x86_64
- build:fedora:x86_64
variables:
LD_PRELOAD: /usr/lib64/libSegFault.so
SEGFAULT_SIGNALS: all
SEGFAULT_SIGNALS: bus abrt
script:
- mkdir -p build && cd build
- cmake .. && make ${MAKE_OPTS} unit-tests
- "tests/unit/unit-tests || true"
- mkdir -p build && cd build
- cmake .. && make ${MAKE_OPTS} unit-tests
- "tests/unit/unit-tests || true"
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
- docker
- docker
test:integration:
stage: test
dependencies:
- build:fedora:x86_64
- build:fedora:x86_64
variables:
LD_PRELOAD: /usr/lib64/libSegFault.so
SEGFAULT_SIGNALS: all
SEGFAULT_SIGNALS: bus abrt
script:
- mkdir -p build && cd build
- cmake ..
- make ${MAKE_OPTS} run-integration-tests
- mkdir -p build && cd build
- cmake ..
- make ${MAKE_OPTS} run-integration-tests
artifacts:
name: ${CI_PROJECT_NAME}-integration-tests-${CI_BUILD_REF}
when: always
paths:
- build/tests/integration/
- build/tests/integration/
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
allow_failure: true
tags:
- docker
- docker
# Stage: packaging
##############################################################################
packaging:docker:
stage: packaging
image: docker:19.03
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
@ -202,27 +197,26 @@ packaging:docker:
--file packaging/docker/Dockerfile.app
--tag ${DOCKER_IMAGE}:${DOCKER_TAG} .
tags:
- shell
- linux
- docker
packaging:rpm:
stage: packaging
dependencies:
- build:fedora:x86_64
- build:fedora:x86_64
script:
- mkdir -p build && cd build
- cmake -DWITH_NODE_ETHERCAT=OFF ..
- make ${MAKE_OPTS} doc
- make ${MAKE_OPTS} package
- mkdir -p build && cd build
- cmake -DWITH_NODE_ETHERCAT=OFF ..
- make ${MAKE_OPTS} doc
- make ${MAKE_OPTS} package
artifacts:
expire_in: 1 week
name: ${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}
paths:
- build/*.tar.gz
- build/*.rpm
- build/*.tar.gz
- build/*.rpm
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
- docker
- docker
# Stage: deploy
##############################################################################
@ -233,16 +227,16 @@ deploy:web:
name: rclone/rclone:1.50
entrypoint: [""]
before_script:
- rclone config create fein webdav url ${DEPLOY_PATH} vendor other user ${DEPLOY_USER} pass ${DEPLOY_PASS}
- rclone config create fein webdav url ${DEPLOY_PATH} vendor other user ${DEPLOY_USER} pass ${DEPLOY_PASS}
script:
- rclone copy build/doc/html fein:villas/doc-dev/${CI_BUILD_REF_NAME}
- rclone copy build/doc/html fein:villas/doc-dev/${CI_BUILD_REF_NAME}
dependencies:
- build:docs
- build:docs
only:
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
- "/^v\\d+(\\.\\d+)+$/"
tags:
- docker
- docker
.deploy:packages: &deploy_packages
stage: deploy
@ -250,16 +244,16 @@ deploy:web:
name: rclone/rclone:1.50
entrypoint: [""]
before_script:
- apk add curl
- rclone config create fein webdav url ${DEPLOY_PATH} vendor other user ${DEPLOY_USER} pass ${DEPLOY_PASS}
- apk add curl
- rclone config create fein webdav url ${DEPLOY_PATH} vendor other user ${DEPLOY_USER} pass ${DEPLOY_PASS}
script:
- rclone copy --max-depth 1 --include '*.tar.gz' build fein:packages/dist
- rclone copy --max-depth 1 --include '*.rpm' build fein:packages/fedora/${RELEASEVER}/x86_64
- curl -L --user ${DEPLOY_USER}:${DEPLOY_PASS} ${DEPLOY_PATH}/hooks/createrepo
- rclone copy --max-depth 1 --include '*.tar.gz' build fein:packages/dist
- rclone copy --max-depth 1 --include '*.rpm' build fein:packages/fedora/${RELEASEVER}/x86_64
- curl -L --user ${DEPLOY_USER}:${DEPLOY_PASS} ${DEPLOY_PATH}/hooks/createrepo
dependencies:
- packaging:rpm
- packaging:rpm
tags:
- docker
- docker
deploy:packages:manual:
<<: *deploy_packages
@ -268,50 +262,47 @@ deploy:packages:manual:
deploy:packages:tags:
<<: *deploy_packages
only:
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
deploy:docker:
stage: deploy
image: docker:19.03
before_script:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
script:
- docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
- docker tag ${DOCKER_IMAGE}/dev:${DOCKER_TAG} ${DOCKER_IMAGE}/dev:latest
- docker tag ${DOCKER_IMAGE}/dev-ubuntu:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-ubuntu:latest
- docker tag ${DOCKER_IMAGE}/dev-centos:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-centos:latest
- docker tag ${DOCKER_IMAGE}/dev-raspbian:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-raspbian:latest
- docker tag ${DOCKER_IMAGE}/dev-debian-arm64:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-debian-arm64:latest
- docker tag ${DOCKER_IMAGE}/dev-debian-armhf:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-debian-armhf:latest
- docker push ${DOCKER_IMAGE}:latest
- docker push ${DOCKER_IMAGE}/dev:latest
- docker push ${DOCKER_IMAGE}/dev-ubuntu:latest
- docker push ${DOCKER_IMAGE}/dev-centos:latest
- docker push ${DOCKER_IMAGE}/dev-raspbian:latest
- docker push ${DOCKER_IMAGE}/dev-debian-arm64:latest
- docker push ${DOCKER_IMAGE}/dev-debian-armhf:latest
- docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
- docker tag ${DOCKER_IMAGE}/dev:${DOCKER_TAG} ${DOCKER_IMAGE}/dev:latest
- docker tag ${DOCKER_IMAGE}/dev-ubuntu:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-ubuntu:latest
- docker tag ${DOCKER_IMAGE}/dev-centos:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-centos:latest
- docker tag ${DOCKER_IMAGE}/dev-debian-arm64:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-debian-arm64:latest
- docker tag ${DOCKER_IMAGE}/dev-debian-armhf:${DOCKER_TAG} ${DOCKER_IMAGE}/dev-debian-armhf:latest
- docker push ${DOCKER_IMAGE}:latest
- docker push ${DOCKER_IMAGE}/dev:latest
- docker push ${DOCKER_IMAGE}/dev-ubuntu:latest
- docker push ${DOCKER_IMAGE}/dev-centos:latest
- docker push ${DOCKER_IMAGE}/dev-debian-arm64:latest
- docker push ${DOCKER_IMAGE}/dev-debian-armhf:latest
tags:
- shell
- linux
- docker
only:
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
deploy:docker:tags:
stage: deploy
image: docker:19.03
before_script:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
script:
- docker push ${DOCKER_IMAGE}:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-ubuntu:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-centos:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-raspbian:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-debian-arm64:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-debian-armhf:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-ubuntu:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-centos:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-debian-arm64:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE}/dev-debian-armhf:${DOCKER_TAG}
tags:
- shell
- linux
- docker
only:
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"

View file

@ -11,5 +11,4 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "Buildroot CFLAGS")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Buildroot CXXFLAGS")
set(CMAKE_EXE_LINKER_FLAGS " ${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Buildroot LDFLAGS")
set(CMAKE_LIBRARY_PATH "/usr/lib/${TRIPLET}")
set(CMAKE_LIBRARY_PATH "/usr/lib/${TRIPLET};/usr/local/lib/${TRIPLET}")

View file

@ -11,5 +11,5 @@ set(CMAKE_C_FLAGS "-mfloat-abi=hard ${CMAKE_C_FLAGS}" CACHE STRING "Buildroot CF
set(CMAKE_CXX_FLAGS "-mfloat-abi=hard ${CMAKE_CXX_FLAGS}" CACHE STRING "Buildroot CXXFLAGS")
set(CMAKE_EXE_LINKER_FLAGS " ${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Buildroot LDFLAGS")
set(CMAKE_LIBRARY_PATH "/usr/lib/${TRIPLET}")
set(CMAKE_LIBRARY_PATH "/usr/lib/${TRIPLET};/usr/local/lib/${TRIPLET}")

View file

@ -93,7 +93,7 @@ endif()
if(WITH_NODE_NANOMSG)
list(APPEND NODE_SRC nanomsg.cpp)
list(APPEND INCLUDE_DIRS ${NANOMSG_INCLUDE_DIRS})
list(APPEND LIBRARIES PkgConfig::NANOMSG)
list(APPEND LIBRARIES ${NANOMSG_LIBRARIES})
endif()
# Enable ZeroMQ node type when libzmq is available
@ -135,7 +135,7 @@ endif()
if(WITH_NODE_COMEDI)
list(APPEND NODE_SRC comedi.cpp)
list(APPEND INCLUDE_DIRS ${COMEDILIB_INCLUDE_DIRS})
list(APPEND LIBRARIES PkgConfig::COMEDILIB)
list(APPEND LIBRARIES ${COMEDILIB_LIBRARIES})
endif()
# Enable Infiniband support

View file

@ -2,7 +2,11 @@
set -e
CMAKE_OPTS="-DCMAKE_BUILD_TYPE=Release"
PREFIX=${PREFIX:-/usr/local}
TRIPLET=${TRIPLET:-x86_64-linux-gnu}
CONFIGURE_OPTS+=" --host=${TRIPLET} --prefix=${PREFIX}"
CMAKE_OPTS+=" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX}"
if [ -n "${PACKAGE}" ]; then
TARGET="package"
@ -19,16 +23,12 @@ else
TARGET="install"
fi
if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then
CMAKE_OPTS+=" -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64"
fi
rm -rf thirdparty
mkdir -p thirdparty
pushd thirdparty
DIR=$(mktemp -d)
pushd ${DIR}
# Build & Install Criterion
if [ $(uname -m) != "armv6l" ] && ! pkg-config "criterion >= 2.3.1"; then
if ! pkg-config "criterion >= 2.3.1" && \
[ "${ARCH}" == "x86_64" ]; then
git clone --recursive https://github.com/Snaipe/Criterion
mkdir -p Criterion/build
pushd Criterion/build
@ -44,7 +44,7 @@ fi
hg clone --branch stable-1.5 http://hg.code.sf.net/p/etherlabmaster/code etherlab
pushd etherlab
./bootstrap
./configure --enable-userlib=yes --enable-kernel=no
./configure --enable-userlib=yes --enable-kernel=no ${CONFIGURE_OPTS}
if [ -z "${PACKAGE}" ]; then
make -j$(nproc) install
else
@ -102,18 +102,19 @@ if ! pkg-config "libwebsockets >= 2.3.0"; then
mkdir -p libwebsockets/build
pushd libwebsockets/build
git checkout v4.0-stable
cmake -DLWS_WITHOUT_EXTENSIONS=OFF ${CMAKE_OPTS} ..
cmake -DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITHOUT_EXTENSIONS=OFF ${CMAKE_OPTS} ..
make -j$(nproc) ${TARGET}
popd
fi
# Build & Install uldaq
if [ "${DEBIAN_MULTIARCH}" != "1" ] && ! pkg-config "libuldaq >= 1.0.0"; then
if ! pkg-config "libuldaq >= 1.0.0" && \
[ "${VARIANT}" != "debian-multiarch" ]; then
git clone https://github.com/stv0g/uldaq
pushd uldaq
git checkout rpmbuild
autoreconf -i
./configure --enable-examples=no
./configure --enable-examples=no ${CONFIGURE_OPTS}
if [ -z "${PACKAGE}" ]; then
make -j$(nproc) install
else
@ -130,7 +131,7 @@ if ! pkg-config "comedilib >= 0.11.0"; then
pushd comedilib
git checkout r0_11_0
./autogen.sh
./configure
./configure ${CONFIGURE_OPTS}
if [ -z "${PACKAGE}" ]; then
make -j$(nproc) install
else
@ -173,6 +174,9 @@ if [ -n "${PACKAGE}" ]; then
fi
popd
rm -rf ${DIR}
# Update linker cache
ldconfig
if [ -z "${PACKAGE}" ]; then
ldconfig
fi

View file

@ -36,7 +36,7 @@ set(DOCKER_RUN_OPTS
--volume \"${PROJECT_SOURCE_DIR}:/villas\"
)
foreach(SUFFIX app dev dev-centos dev-ubuntu dev-raspbian)
foreach(SUFFIX app dev dev-centos dev-ubuntu)
add_custom_target(deploy-docker-${SUFFIX}
COMMAND docker push ${DOCKER_IMAGE}/${SUFFIX}:${DOCKER_TAG}
COMMAND docker push ${DOCKER_IMAGE}/${SUFFIX}:latest

View file

@ -32,23 +32,15 @@ ARG VERSION=unknown
ARG VARIANT=unknown
# This image is built by villas-node-git/packaging/docker/Dockerfile.dev
FROM $BUILDER_IMAGE AS builder
FROM $BUILDER_IMAGE
COPY . /villas/
RUN rm -rf /villas/build && mkdir /villas/build
WORKDIR /villas/build
RUN cmake -DCPACK_GENERATOR=RPM -DWITH_NODE_ETHERCAT=OFF ..
RUN make -j$(nproc) doc
RUN make -j$(nproc) package
FROM fedora:29
# Some of the dependencies are only available in our own repo
ADD https://packages.fein-aachen.org/fedora/fein.repo /etc/yum.repos.d/
COPY --from=builder /villas/build/*.rpm /tmp/
RUN dnf -y install /tmp/*.rpm
RUN cmake .. && \
make -j$(nproc) doc && \
make -j$(nproc) install
# For WebSocket / API access
EXPOSE 80

View file

@ -1,5 +1,9 @@
# Dockerfile
#
# This image can be used for running VILLASnode
# by running:
# make docker
#
# @author Steffen Vogel <stvogel@eonerc.rwth-aachen.de>
# @copyright 2014-2020, Institute for Automation of Complex Power Systems, EONERC
# @license GNU General Public License (version 3)
@ -20,22 +24,31 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
###################################################################################
ARG BUILDER_IMAGE=villas/node-dev-raspbian
ARG BUILDER_IMAGE=villas/node-dev
ARG DOCKER_TAG=latest
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG VARIANT=unknown
# This image is built by villas-node-git/packaging/docker/Dockerfile.dev-raspbian
FROM $BUILDER_IMAGE
# This image is built by villas-node-git/packaging/docker/Dockerfile.dev
FROM $BUILDER_IMAGE AS builder
COPY . /villas/
RUN rm -rf /villas/build && mkdir /villas/build
WORKDIR /villas/build
RUN cmake ..
RUN make -j$(nproc) install
RUN cmake -DCPACK_GENERATOR=RPM -DWITH_NODE_ETHERCAT=OFF ..
RUN make -j$(nproc) doc
RUN make -j$(nproc) package
FROM fedora:32
# Some of the dependencies are only available in our own repo
ADD https://packages.fein-aachen.org/fedora/fein.repo /etc/yum.repos.d/
COPY --from=builder /villas/build/*.rpm /tmp/
RUN dnf -y install /tmp/*.rpm
# For WebSocket / API access
EXPOSE 80
@ -54,7 +67,7 @@ LABEL \
org.label-schema.vendor = "Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name = "Steffen Vogel" \
org.label-schema.author.email = "stvogel@eonerc.rwth-aachen.de" \
org.label-schema.description = "A image containing for VILLASnode based on Raspbian" \
org.label-schema.description = "A image containing for VILLASnode based on Fedora" \
org.label-schema.url = "http://fein-aachen.org/projects/villas-framework/" \
org.label-schema.vcs-url = "https://git.rwth-aachen.de/acs/public/villas/node" \
org.label-schema.usage = "https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker"

View file

@ -66,24 +66,32 @@ RUN pip install \
# Dependencies
RUN dnf -y install \
openssl-devel \
protobuf-devel \
protobuf-c-devel \
libuuid-devel \
libconfig-devel \
libnl3-devel \
libcurl-devel \
jansson-devel \
libwebsockets-devel \
zeromq-devel \
nanomsg-devel \
librabbitmq-devel \
mosquitto-devel \
libibverbs-devel \
librdmacm-devel \
libusb-devel
openssl-devel \
protobuf-devel \
protobuf-c-devel \
libuuid-devel \
libconfig-devel \
libnl3-devel \
libcurl-devel \
jansson-devel \
zeromq-devel \
nanomsg-devel \
librabbitmq-devel \
mosquitto-devel \
libibverbs-devel \
librdmacm-devel \
libusb-devel \
libwebsockets-devel
# or install unpackaged dependencies from source
# Add local and 64-bit locations to linker paths
ENV echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
ENV VARIANT=ubuntu
ENV ARCH=x86_64
ENV TRIPLET=x86_64-linux-gnu
# Install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
@ -94,8 +102,6 @@ RUN ln -s /usr/lib64/tc /usr/lib/tc
EXPOSE 80
EXPOSE 443
ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64
WORKDIR /villas
ENTRYPOINT bash

View file

@ -67,6 +67,14 @@ RUN dnf -y install \
librdmacm-devel \
libusb1-devel
# Add local and 64-bit locations to linker paths
ENV echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
ENV VARIANT=ubuntu
ENV ARCH=x86_64
ENV TRIPLET=x86_64-linux-gnu
# or install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
@ -78,8 +86,6 @@ RUN ln -s /usr/lib64/tc /usr/lib/tc
EXPOSE 80
EXPOSE 443
ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64
WORKDIR /villas
LABEL \

View file

@ -69,10 +69,15 @@ RUN apt-get update && \
libnanomsg-dev:${ARCH} \
librabbitmq-dev:${ARCH} \
libmosquitto-dev:${ARCH} \
libcomedi-dev:${ARCH} \
libibverbs-dev:${ARCH} \
librdmacm-dev:${ARCH} \
libre-dev:${ARCH}
# Add local and 64-bit locations to linker paths
ENV echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
# Install cmake (version from buster has a bug)
RUN cd /tmp && \
wget https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.sh && \
@ -82,20 +87,37 @@ RUN cd /tmp && \
ADD cmake/toolchains/debian-${ARCH}.cmake /
ENV PKG_CONFIG_PATH=/usr/lib/${TRIPLET}/pkgconfig:/usr/local/lib/pkgconfig:/usr/share/pkgconfig
ENV PKG_CONFIG_LIBDIR=/usr/lib/${TRIPLET}/pkgconfig:/usr/share/pkgconfig
ENV PKG_CONFIG_PATH=/usr/lib/${TRIPLET}/pkgconfig:/usr/local/lib/${TRIPLET}/pkgconfig
ENV CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=/debian-${ARCH}.cmake \
-DCMAKE_INSTALL_LIBDIR=/usr/lib/${TRIPLET}"
-DCMAKE_INSTALL_LIBDIR=/usr/local/lib/${TRIPLET} \
-DLWS_INSTALL_LIB_DIR=/usr/local/lib/${TRIPLET}"
ENV DEBIAN_MULTIARCH=1
ENV CONFIGURE_OPTS="--libdir=/usr/local/lib/${TRIPLET}"
RUN mkdir -p /usr/local/lib/${TRIPLET}
ENV CPP=${TRIPLET}-cpp
ENV CC=${TRIPLET}-gcc
ENV CXX=${TRIPLET}-g++
ENV LD=${TRIPLET}-ld
ENV AS=${TRIPLET}-as
ENV AR=${TRIPLET}-ar
ENV RANLIB=${TRIPLET}-ranlib
ENV VARIANT=debian-multiarch
ENV ARCH=${ARCH}
ENV TRIPLET=${TRIPLET}
# Install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
# Expose ports for HTTP and WebSocket frontend
EXPOSE 80
EXPOSE 443
WORKDIR /villas
ENTRYPOINT bash
LABEL \
org.label-schema.schema-version="1.0" \

View file

@ -1,91 +0,0 @@
# Dockerfile for cross-compilation in Docker targeting the Raspberyy Pi.
#
# @author Steffen Vogel <stvogel@eonerc.rwth-aachen.de>
# @copyright 2014-2020, Institute for Automation of Complex Power Systems, EONERC
# @license GNU General Public License (version 3)
#
# VILLASnode
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
###################################################################################
FROM balenalib/rpi-raspbian:buster
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG VARIANT=unknown
# Toolchain
RUN apt-get update && \
apt-get install -y \
gcc g++ \
pkg-config cmake make \
autoconf automake autogen libtool \
git mercurial curl wget tar bzip2 diffutils \
flex bison \
protobuf-compiler protobuf-c-compiler
# Dependencies
RUN apt-get update && \
apt-get install -y\
libssl-dev \
libprotobuf-dev \
libprotobuf-c-dev \
uuid-dev \
libconfig-dev \
libnl-3-dev libnl-route-3-dev \
libcurl4-openssl-dev \
libjansson-dev \
libzmq3-dev \
libnanomsg-dev \
librabbitmq-dev \
libmosquitto-dev \
librdmacm-dev \
libusb-1.0-0-dev
ENV CC=gcc
ENV CXX=g++
# Add CMake install dir to PATH
ENV PATH="usr/local/bin:${PATH}"
# Install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
# Expose ports for HTTP and WebSocket frontend
EXPOSE 80
EXPOSE 443
ENV LD_LIBRARY_PATH /usr/local/lib
WORKDIR /villas
ENTRYPOINT bash
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.variant="$VARIANT" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \
org.label-schema.description="A image containing all build-time dependencies for VILLASnode based on Raspbian" \
org.label-schema.url="http://fein-aachen.org/projects/villas-framework/" \
org.label-schema.vcs-url="https://git.rwth-aachen.de/acs/public/villas/node" \
org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker"

View file

@ -29,7 +29,7 @@
###################################################################################
# You can choose between Debian and Ubuntu here
FROM ubuntu:18.04
FROM ubuntu:20.04
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
@ -68,6 +68,14 @@ RUN apt-get update && \
librdmacm-dev \
libusb-1.0-0-dev
# Add local and 64-bit locations to linker paths
ENV echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
ENV VARIANT=ubuntu
ENV ARCH=x86_64
ENV TRIPLET=x86_64-linux-gnu
# or install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
@ -76,13 +84,10 @@ RUN bash deps.sh
EXPOSE 80
EXPOSE 443
ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64
# Workaround for libnl3's search path for netem distributions
RUN ln -s /usr/lib64/tc /usr/lib/tc
WORKDIR /villas
ENTRYPOINT bash
LABEL \
org.label-schema.schema-version="1.0" \