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:
parent
7cb45fa9fd
commit
fa96d2a016
13 changed files with 221 additions and 274 deletions
219
.gitlab-ci.yml
219
.gitlab-ci.yml
|
@ -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+)+$/"
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -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}")
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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"
|
|
@ -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" \
|
||||
|
|
Loading…
Add table
Reference in a new issue