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

Merge branch 'new-docker-registry' into 'master'

New docker registry and other CI fixes

See merge request acs/public/villas/node!56
This commit is contained in:
Steffen Vogel 2019-10-26 17:25:18 +02:00
commit b11301351e
6 changed files with 87 additions and 37 deletions

View file

@ -6,8 +6,8 @@ variables:
CRITERION_OPTS: --ignore-warnings
DOCKER_FILE: packaging/docker/Dockerfile.dev
DOCKER_TAG: ${CI_COMMIT_REF_NAME}
DOCKER_IMAGE: registry.git.rwth-aachen.de/acs/public/villas/villasnode/node
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/villasnode/node-dev
DOCKER_IMAGE: registry.git.rwth-aachen.de/acs/public/villas/node
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev
MAKE_OPTS: -j32
RELEASEVER: 29
@ -40,26 +40,32 @@ prepare:raspbian:docker-dev:
extends: prepare:fedora:docker-dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-raspbian
DOCKER_IMAGE_DEV: villas/node-dev-raspbian
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian
prepare:ubuntu:docker-dev:
extends: prepare:fedora:docker-dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-ubuntu
DOCKER_IMAGE_DEV: villas/node-dev-ubuntu
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu
prepare:centos:docker-dev:
extends: prepare:fedora:docker-dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-centos
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos
prepare:debian-armhf:docker-dev:
extends: prepare:fedora:docker-dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
DOCKER_IMAGE_DEV: villas/node-dev-debian-armhf
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/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
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
DOCKER_IMAGE_DEV: villas/node-dev-debian-arm64
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64
DOCKER_OPTS: --build-arg ARCH=arm64 --build-arg TRIPLET=aarch64-linux-gnu
# Stage: build
@ -87,26 +93,36 @@ build:fedora-minimal:x86_64:
build:ubuntu:x86_64:
extends: build:fedora:x86_64
variables:
DOCKER_IMAGE_DEV: villas/node-dev-ubuntu
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/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
script:
- mkdir -p build && cd build
- cmake3 .. ${CMAKE_OPTS}
- make ${MAKE_OPTS}
variables:
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/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: villas/node-dev-raspbian
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian
CMAKE_OPTS: -DWITH_NODE_INFINIBAND=OFF
when: manual
build:debian-multiarch:armhf:
extends: build:fedora:x86_64
variables:
DOCKER_IMAGE_DEV: villas/node-dev-debian-armhf
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/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
variables:
DOCKER_IMAGE_DEV: villas/node-dev-debian-arm64
DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64
CMAKE_OPTS: -DCMAKE_TOOLCHAIN_FILE=/debian-arm64.cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/aarch64-linux-gnu
build:docs:
@ -177,8 +193,6 @@ packaging:docker:
--build-arg BUILDER_IMAGE=${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
--file packaging/docker/Dockerfile.app
--tag ${DOCKER_IMAGE}:${DOCKER_TAG} .
- docker push ${DOCKER_IMAGE}:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
- shell
- linux
@ -239,3 +253,19 @@ deploy:packages:tags:
only:
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
deploy:docker:
stage: deploy
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker push ${DOCKER_IMAGE}:${DOCKER_TAG}
- docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev:${DOCKER_TAG}
- docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu:${DOCKER_TAG}
- docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos:${DOCKER_TAG}
- docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian:${DOCKER_TAG}
- docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64:${DOCKER_TAG}
- docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-armhf:${DOCKER_TAG}
tags:
- shell
- linux

View file

@ -21,7 +21,7 @@
###################################################################################
set(DOCKER_FILE Dockerfile)
set(DOCKER_IMAGE villas/node)
set(DOCKER_IMAGE registry.git.rwth-aachen.de/acs/public/villas/node)
set(DOCKER_TAG ${CMAKE_PROJECT_GIT_BRANCH})
set(DOCKER_RUN_OPTS
--interactive
@ -38,29 +38,29 @@ set(DOCKER_RUN_OPTS
foreach(SUFFIX app dev dev-centos dev-ubuntu dev-raspbian)
add_custom_target(deploy-docker-${SUFFIX}
COMMAND docker push ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG}
COMMAND docker push ${DOCKER_IMAGE}-${SUFFIX}:latest
COMMENT "Deploy Docker image: ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG}"
COMMAND docker push ${DOCKER_IMAGE}/${SUFFIX}:${DOCKER_TAG}
COMMAND docker push ${DOCKER_IMAGE}/${SUFFIX}:latest
COMMENT "Deploy Docker image: ${DOCKER_IMAGE}/${SUFFIX}:${DOCKER_TAG}"
)
add_custom_target(run-docker-${SUFFIX}
COMMAND docker run ${DOCKER_RUN_OPTS} ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG}
COMMENT "Run Docker image: ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG}"
COMMAND docker run ${DOCKER_RUN_OPTS} ${DOCKER_IMAGE}/${SUFFIX}:${DOCKER_TAG}
COMMENT "Run Docker image: ${DOCKER_IMAGE}/${SUFFIX}:${DOCKER_TAG}"
)
add_custom_target(docker-${SUFFIX}
COMMAND docker build
--file ${CMAKE_CURRENT_SOURCE_DIR}/Dockerfile.${SUFFIX}
--tag ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG}
--tag ${DOCKER_IMAGE}-${SUFFIX}:latest
--build-arg BUILDER_IMAGE=${DOCKER_IMAGE}-dev:${DOCKER_TAG}
--tag ${DOCKER_IMAGE}/${SUFFIX}:${DOCKER_TAG}
--tag ${DOCKER_IMAGE}/${SUFFIX}:latest
--build-arg BUILDER_IMAGE=${DOCKER_IMAGE}/dev:${DOCKER_TAG}
--build-arg DOCKER_TAG=${DOCKER_TAG}
--build-arg GIT_BRANCH=${CMAKE_PROJECT_GIT_BRANCH}
--build-arg GIT_REV=${CMAKE_PROJECT_GIT_REV}
--build-arg VERSION=${CMAKE_PROJECT_VERSION}
--build-arg VARIANT=${CMAKE_PROJECT_VARIANT}
${DOCKER_BUILD_OPTS} ${PROJECT_SOURCE_DIR}
COMMENT "Build Docker image: ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG}"
COMMENT "Build Docker image: ${DOCKER_IMAGE}/${SUFFIX}:${DOCKER_TAG}"
)
add_dependencies(deploy-docker-${SUFFIX} docker-${SUFFIX})
@ -74,8 +74,8 @@ add_custom_target(run-docker
)
add_custom_target(docker
COMMAND docker tag ${DOCKER_IMAGE}-app:${DOCKER_TAG} ${DOCKER_IMAGE}:${DOCKER_TAG}
COMMAND docker tag ${DOCKER_IMAGE}-app:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
COMMAND docker tag ${DOCKER_IMAGE}/app:${DOCKER_TAG} ${DOCKER_IMAGE}:${DOCKER_TAG}
COMMAND docker tag ${DOCKER_IMAGE}/app:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
)
add_custom_target(deploy-docker DEPENDS docker-app

View file

@ -38,7 +38,7 @@ ARG VERSION=unknown
ARG VARIANT=unknown
# Some of the dependencies are only available in our own repo
ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/
ADD https://packages.fein-aachen.org/redhat/fein.repo /etc/yum.repos.d/
USER root
@ -48,7 +48,7 @@ RUN yum -y install epel-release
# Toolchain
RUN yum -y install \
devtoolset-7-toolchain \
pkgconfig make cmake \
pkgconfig make cmake3 \
autoconf automake autogen libtool \
flex bison \
texinfo git curl tar \
@ -84,28 +84,48 @@ RUN yum -y install \
libwebsockets-devel \
zeromq-devel \
nanomsg \
libiec61850 \
librabbitmq-devel \
mosquitto-devel \
comedilib-devel \
libibverbs-devel \
librdmacm-devel \
re-devel \
uldaq-devel \
spdlog-devel
uldaq-devel
# Build & Install fmtlib
RUN cd /tmp && \
git clone --recursive https://github.com/fmtlib/fmt.git && \
mkdir -p fmt/build && cd fmt/build && \
git checkout 5.2.0 && \
cmake3 -DBUILD_SHARED_LIBS=1 .. && make -j$(nproc) install && \
rm -rf /tmp/*
# Build & Install spdlog
RUN cd /tmp && \
git clone --recursive https://github.com/gabime/spdlog.git && \
mkdir -p spdlog/build && cd spdlog/build && \
git checkout v1.3.1 && \
cmake3 -DCMAKE_BUILD_TYPE=Release -DSPDLOG_FMT_EXTERNAL=1 -DSPDLOG_BUILD_BENCH=OFF .. && make -j$(nproc) install && \
rm -rf /tmp/*
# Build & Install Criterion
RUN cd /tmp && \
git clone --recursive https://github.com/Snaipe/Criterion && \
mkdir -p Criterion/build && cd Criterion/build && \
cmake -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make install && \
cmake3 -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make install && \
rm -rf /tmp/*
# Build & Install Criterion
# Build & Install libwebsockets
RUN cd /tmp && \
git clone -b v2.4-stable http://github.com/warmcat/libwebsockets && \
git clone -b v3.1-stable https://github.com/warmcat/libwebsockets && \
mkdir -p libwebsockets/build && cd libwebsockets/build && \
cmake -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make install && \
cmake3 -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 -DLWS_WITHOUT_TESTAPPS=ON .. && make -j$(nproc) install && \
rm -rf /tmp/*
# Build & Install libiec61850
RUN cd /tmp && \
git clone -b v1.3.1 https://github.com/mz-automation/libiec61850 && \
mkdir -p libiec61850/build && cd libiec61850/build && \
cmake3 -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make -j$(nproc) install && \
rm -rf /tmp/*
# Workaround for libnl3's search path for netem distributions

View file

@ -106,7 +106,7 @@ RUN cd /tmp && \
RUN cd /tmp && \
git clone -b v3.1-stable https://github.com/warmcat/libwebsockets && \
mkdir -p libwebsockets/build && cd libwebsockets/build && \
cmake ${CMAKE_OPTS} -DLWS_INSTALL_LIB_DIR=/usr/lib/${TRIPLET} .. && make -j$(nproc) install && \
cmake ${CMAKE_OPTS} -DLWS_INSTALL_LIB_DIR=/usr/lib/${TRIPLET} -DLWS_WITHOUT_TESTAPPS=ON .. && make -j$(nproc) install && \
rm -rf /tmp/*
# Build & Install libiec61850

View file

@ -81,7 +81,7 @@ RUN cd /tmp && \
RUN cd /tmp && \
git clone -b v3.1-stable https://github.com/warmcat/libwebsockets && \
mkdir -p libwebsockets/build && cd libwebsockets/build && \
cmake .. && make -j$(nproc) install && \
cmake -DLWS_WITHOUT_TESTAPPS=ON .. && make -j$(nproc) install && \
rm -rf /tmp/*
# Build & Install libiec61850

View file

@ -107,7 +107,7 @@ RUN cd /tmp && \
RUN cd /tmp && \
git clone -b v3.1-stable https://github.com/warmcat/libwebsockets && \
mkdir -p libwebsockets/build && cd libwebsockets/build && \
cmake -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make -j$(nproc) install && \
cmake -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 -DLWS_WITHOUT_TESTAPPS=ON .. && make -j$(nproc) install && \
rm -rf /tmp/*
# Build & Install libiec61850