From 118b47c34a632dad136785fdfdb9aacee6639893 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 26 Oct 2019 14:54:11 +0200 Subject: [PATCH 1/6] docker: use RWTH GitLab registry for images --- .gitlab-ci.yml | 20 ++++++++++---------- packaging/docker/CMakeLists.txt | 24 ++++++++++++------------ 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7de34db24..1e313520d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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,26 @@ 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: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 +87,26 @@ 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: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: diff --git a/packaging/docker/CMakeLists.txt b/packaging/docker/CMakeLists.txt index 7f8957e15..77c9532f3 100644 --- a/packaging/docker/CMakeLists.txt +++ b/packaging/docker/CMakeLists.txt @@ -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 From b54028fba7c97321398974219701048e4490024e Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 26 Oct 2019 15:13:01 +0200 Subject: [PATCH 2/6] docker: enable builds for Centos --- .gitlab-ci.yml | 23 ++++++++++++++- packaging/docker/Dockerfile.dev-centos | 40 +++++++++++++++++++------- 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1e313520d..48ca8cb1a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -48,6 +48,12 @@ prepare:ubuntu:docker-dev: DOCKER_FILE: packaging/docker/Dockerfile.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: @@ -90,6 +96,16 @@ build:ubuntu:x86_64: 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: @@ -178,7 +194,12 @@ packaging:docker: --file packaging/docker/Dockerfile.app --tag ${DOCKER_IMAGE}:${DOCKER_TAG} . - docker push ${DOCKER_IMAGE}:${DOCKER_TAG} - - docker push ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64 + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-armhf tags: - shell - linux diff --git a/packaging/docker/Dockerfile.dev-centos b/packaging/docker/Dockerfile.dev-centos index 2535797b9..bed2e1c73 100644 --- a/packaging/docker/Dockerfile.dev-centos +++ b/packaging/docker/Dockerfile.dev-centos @@ -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 From 1a4c0183174803f5e5846d502627658c47fe82b8 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 26 Oct 2019 16:39:28 +0200 Subject: [PATCH 3/6] ci: split docker deploy job --- .gitlab-ci.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 48ca8cb1a..f0bcd632f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -194,12 +194,6 @@ packaging:docker: --file packaging/docker/Dockerfile.app --tag ${DOCKER_IMAGE}:${DOCKER_TAG} . - docker push ${DOCKER_IMAGE}:${DOCKER_TAG} - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64 - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-armhf tags: - shell - linux @@ -260,3 +254,18 @@ deploy:packages:tags: only: # Only on version tags - "/^v\\d+(\\.\\d+)+$/" + +deploy:docker-dev: + stage: deploy + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64 + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-armhf + tags: + - shell + - linux From 7f97b5f138687da386835799c2b4e6c5e969c0d0 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 26 Oct 2019 16:39:54 +0200 Subject: [PATCH 4/6] docker: do nit install libwebsockets test apps --- packaging/docker/Dockerfile.dev-debian-multiarch | 2 +- packaging/docker/Dockerfile.dev-raspbian | 2 +- packaging/docker/Dockerfile.dev-ubuntu | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packaging/docker/Dockerfile.dev-debian-multiarch b/packaging/docker/Dockerfile.dev-debian-multiarch index a04855684..c09716b91 100644 --- a/packaging/docker/Dockerfile.dev-debian-multiarch +++ b/packaging/docker/Dockerfile.dev-debian-multiarch @@ -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 diff --git a/packaging/docker/Dockerfile.dev-raspbian b/packaging/docker/Dockerfile.dev-raspbian index 93aa1e313..6b3b2bb80 100644 --- a/packaging/docker/Dockerfile.dev-raspbian +++ b/packaging/docker/Dockerfile.dev-raspbian @@ -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 diff --git a/packaging/docker/Dockerfile.dev-ubuntu b/packaging/docker/Dockerfile.dev-ubuntu index 8e998d414..1ed1e16eb 100644 --- a/packaging/docker/Dockerfile.dev-ubuntu +++ b/packaging/docker/Dockerfile.dev-ubuntu @@ -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 From fa0d224b69ef960c5f8a9048835cbff04d3136f1 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 26 Oct 2019 16:54:27 +0200 Subject: [PATCH 5/6] ci: upload docker images only in deploy stage --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f0bcd632f..de46d0532 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -193,7 +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} tags: - shell - linux @@ -255,11 +254,12 @@ deploy:packages:tags: # Only on version tags - "/^v\\d+(\\.\\d+)+$/" -deploy:docker-dev: +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 push registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos From b7d37c94050ba828aa1565fff26f66cf2e017398 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 26 Oct 2019 17:08:10 +0200 Subject: [PATCH 6/6] ci: fix missing docker tags --- .gitlab-ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index de46d0532..d2f7921a8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -260,12 +260,12 @@ deploy:docker: - 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 push registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64 - - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-armhf + - 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