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

328 lines
8.7 KiB
YAML
Raw Permalink Normal View History

2016-09-07 06:23:47 +02:00
variables:
2017-04-27 09:33:53 +02:00
GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: recursive
PREFIX: /usr/
2017-09-16 18:06:38 +02:00
RSYNC_OPTS: --recursive --ignore-missing-args --chown ${DEPLOY_USER}:${DEPLOY_USER}
2018-05-13 14:23:48 +02:00
CRITERION_OPTS: --ignore-warnings
2019-04-05 02:51:06 +02:00
DOCKER_FILE: packaging/docker/Dockerfile.dev
2019-03-09 13:07:39 +01:00
DOCKER_TAG: ${CI_COMMIT_REF_NAME}
DOCKER_IMAGE: registry.git.rwth-aachen.de/acs/public/villas/node
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev
MAKE_OPTS: -j32
2019-11-12 19:03:04 +01:00
RELEASEVER: '29'
2016-09-07 06:23:47 +02:00
stages:
2020-06-07 01:38:05 +02:00
- prepare
- build
- test
- packaging
- deploy
2017-05-01 16:57:30 +02:00
# For some reason, GitLab CI prunes the contents of the submodules so we need to restore them.
before_script:
2020-06-07 01:38:05 +02:00
- git submodule foreach git checkout .
2017-05-01 16:57:30 +02:00
# Stage: prepare
##############################################################################
2016-09-07 06:23:47 +02:00
# Build docker image which is used to build & test VILLASnode
2020-06-07 01:38:05 +02:00
.prepare:docker-dev: &prepare_docker_dev
2016-09-07 06:23:47 +02:00
stage: prepare
script:
2020-06-07 01:38:05 +02:00
- docker build ${DOCKER_OPTS}
--file ${DOCKER_FILE}
--tag ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} .
2016-10-14 01:08:57 -04:00
tags:
2020-06-07 01:38:05 +02:00
- shell
- linux
2016-09-07 06:23:47 +02:00
2020-06-07 01:38:05 +02:00
prepare:fedora:docker-dev:
<<: *prepare_docker_dev
variables:
2020-06-07 01:38:05 +02:00
DOCKER_FILE: packaging/docker/Dockerfile.dev
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev
2019-04-05 02:19:40 +02:00
2020-07-01 15:37:07 +02:00
prepare:fedora:docker-dev-minimal:
<<: *prepare_docker_dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-minimal
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-minimal
prepare:ubuntu:docker-dev:
2020-06-07 01:38:05 +02:00
<<: *prepare_docker_dev
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-ubuntu
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-ubuntu
2019-10-26 15:13:01 +02:00
prepare:centos:docker-dev:
2020-06-07 01:38:05 +02:00
<<: *prepare_docker_dev
2019-10-26 15:13:01 +02:00
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-centos
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-centos
2019-10-26 15:13:01 +02:00
2019-06-26 23:33:41 +02:00
prepare:debian-armhf:docker-dev:
2020-06-07 01:38:05 +02:00
<<: *prepare_docker_dev
2019-06-26 23:33:41 +02:00
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-armhf
DOCKER_OPTS: --build-arg ARCH=armhf --build-arg TRIPLET=arm-linux-gnueabihf
2019-06-26 23:33:41 +02:00
prepare:debian-arm64:docker-dev:
2020-06-07 01:38:05 +02:00
<<: *prepare_docker_dev
2019-04-05 02:51:06 +02:00
variables:
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-arm64
DOCKER_OPTS: --build-arg ARCH=arm64 --build-arg TRIPLET=aarch64-linux-gnu
2019-04-05 02:19:40 +02:00
# Stage: build
##############################################################################
2016-09-07 06:23:47 +02:00
2020-06-07 01:38:05 +02:00
.build:fedora:x86_64: &build
2016-09-07 06:23:47 +02:00
stage: build
script:
2020-06-07 01:38:05 +02:00
- mkdir -p build && cd build
2020-06-15 23:01:26 +02:00
- cmake ${CMAKE_OPTS} ..
2020-06-07 01:38:05 +02:00
- make ${MAKE_OPTS}
2016-09-07 06:23:47 +02:00
artifacts:
expire_in: 1 week
2016-09-07 06:23:47 +02:00
paths:
2020-06-07 01:38:05 +02:00
- build/
2019-03-09 13:07:39 +01:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
2016-10-14 01:08:57 -04:00
tags:
2020-06-07 01:38:05 +02:00
- docker
build:fedora:x86_64:
<<: *build
2016-09-09 23:54:00 -04:00
2019-04-05 02:19:40 +02:00
build:fedora-minimal:x86_64:
2020-06-07 01:38:05 +02:00
<<: *build
2019-04-05 02:51:06 +02:00
variables:
2020-07-01 15:37:07 +02:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-minimal
CMAKE_OPTS: -DWITH_GRAPHVIZ=OFF
-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
-DWITH_FPGA=OFF
2020-07-01 15:37:07 +02:00
build:fedora-minimal-default:x86_64:
<<: *build
variables:
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-minimal
2019-04-05 02:51:06 +02:00
build:ubuntu:x86_64:
2020-06-07 01:38:05 +02:00
<<: *build
2019-04-05 02:51:06 +02:00
variables:
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-ubuntu
2019-09-04 00:21:04 +02:00
CMAKE_OPTS: -DCMAKE_MODULE_PATH=/usr/local/lib64/cmake -DCMAKE_PREFIX_PATH=/usr/local
2016-10-14 01:08:57 -04:00
2019-10-26 15:13:01 +02:00
build:centos:x86_64:
2020-06-07 01:38:05 +02:00
<<: *build
2019-10-26 15:13:01 +02:00
script:
2020-06-07 01:38:05 +02:00
- mkdir -p build && cd build
2020-06-15 23:01:26 +02:00
- cmake3 ${CMAKE_OPTS} ..
2020-06-07 01:38:05 +02:00
- make ${MAKE_OPTS}
2019-10-26 15:13:01 +02:00
variables:
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-centos
2019-10-26 15:13:01 +02:00
CMAKE_OPTS: -DCMAKE_MODULE_PATH=/usr/local/lib64/cmake -DCMAKE_PREFIX_PATH=/usr/local
build:debian-multiarch:armhf:
2020-06-07 01:38:05 +02:00
<<: *build
2019-06-26 23:33:41 +02:00
variables:
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-armhf
2019-06-26 23:33:41 +02:00
build:debian-multiarch:arm64:
2020-06-07 01:38:05 +02:00
<<: *build
variables:
2020-01-24 12:20:06 +01:00
DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-debian-arm64
2019-04-05 02:19:40 +02:00
build:docs:
stage: build
artifacts:
name: ${CI_PROJECT_NAME}-doc-${CI_BUILD_REF}
paths:
2020-06-07 01:38:05 +02:00
- build/doc/
2019-04-05 02:19:40 +02:00
script:
2020-06-07 01:38:05 +02:00
- mkdir -p build && cd build
2020-06-15 23:01:26 +02:00
- cmake ${CMAKE_OPTS} ..
2020-06-07 01:38:05 +02:00
- make ${MAKE_OPTS} doc
2019-03-09 13:07:39 +01:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
2020-06-07 01:38:05 +02:00
- docker
2016-09-07 06:23:47 +02:00
# Stage: test
##############################################################################
2020-06-07 23:28:43 +02:00
test:flake8:
stage: test
script:
- flake8 python/
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
- docker
test:unit:
stage: test
2016-10-14 01:33:07 -04:00
dependencies:
2020-06-07 01:38:05 +02:00
- build:fedora:x86_64
2019-06-27 01:44:19 +02:00
variables:
LD_PRELOAD: /usr/lib64/libSegFault.so
SEGFAULT_SIGNALS: all
SEGFAULT_SIGNALS: bus abrt
script:
2020-06-07 01:38:05 +02:00
- mkdir -p build && cd build
2020-06-15 23:01:26 +02:00
- cmake ${CMAKE_OPTS} ..
- make ${MAKE_OPTS} run-unit-tests
2019-03-09 13:07:39 +01:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
2016-10-14 01:08:57 -04:00
tags:
2020-06-07 01:38:05 +02:00
- docker
test:integration:
stage: test
2020-07-01 17:06:24 +02:00
allow_failure: true
dependencies:
2020-06-07 01:38:05 +02:00
- build:fedora:x86_64
script:
2020-06-07 01:38:05 +02:00
- mkdir -p build && cd build
2020-06-15 23:01:26 +02:00
- cmake ${CMAKE_OPTS} ..
2020-06-07 01:38:05 +02:00
- make ${MAKE_OPTS} run-integration-tests
artifacts:
2017-09-16 18:06:38 +02:00
name: ${CI_PROJECT_NAME}-integration-tests-${CI_BUILD_REF}
2017-03-31 21:20:36 +02:00
when: always
paths:
2020-06-07 01:38:05 +02:00
- build/tests/integration/
2019-03-09 13:07:39 +01:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
2016-10-14 01:08:57 -04:00
tags:
2020-06-07 01:38:05 +02:00
- docker
2016-10-14 01:08:57 -04:00
2019-04-05 02:19:40 +02:00
# Stage: packaging
##############################################################################
packaging:docker:
stage: packaging
2020-06-07 01:38:05 +02:00
image: docker:19.03
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
2019-04-05 02:19:40 +02:00
script:
- docker build
--build-arg BUILDER_IMAGE=${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
--file packaging/docker/Dockerfile.app
--tag ${DOCKER_IMAGE}:${DOCKER_TAG} .
tags:
2020-06-07 01:38:05 +02:00
- docker
2019-04-05 02:19:40 +02:00
packaging:rpm:
stage: packaging
dependencies:
2020-06-07 01:38:05 +02:00
- build:fedora:x86_64
2019-04-05 02:19:40 +02:00
script:
2020-06-07 01:38:05 +02:00
- mkdir -p build && cd build
- cmake -DWITH_NODE_ETHERCAT=OFF ..
- make ${MAKE_OPTS} doc
- make ${MAKE_OPTS} package
2019-04-05 02:19:40 +02:00
artifacts:
expire_in: 1 week
name: ${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}
paths:
2020-06-07 01:38:05 +02:00
- build/*.tar.gz
- build/*.rpm
2019-04-05 02:19:40 +02:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
tags:
2020-06-07 01:38:05 +02:00
- docker
2019-04-05 02:19:40 +02:00
2017-11-20 14:30:17 +01:00
# Stage: deploy
##############################################################################
2017-03-31 21:20:36 +02:00
deploy:web:
2016-10-15 22:52:31 -04:00
stage: deploy
2019-11-12 19:03:04 +01:00
image:
name: rclone/rclone:1.50
entrypoint: [""]
before_script:
2020-06-07 01:38:05 +02:00
- rclone config create fein webdav url ${DEPLOY_PATH} vendor other user ${DEPLOY_USER} pass ${DEPLOY_PASS}
2016-10-15 22:52:31 -04:00
script:
2020-06-07 01:38:05 +02:00
- rclone copy build/doc/html fein:villas/doc-dev/${CI_BUILD_REF_NAME}
2017-04-02 02:37:11 +02:00
dependencies:
2020-06-07 01:38:05 +02:00
- build:docs
only:
2019-11-12 19:03:04 +01:00
# Only on version tags
2020-06-07 01:38:05 +02:00
- "/^v\\d+(\\.\\d+)+$/"
2017-04-02 02:37:11 +02:00
tags:
2020-06-07 01:38:05 +02:00
- docker
2017-04-02 02:37:11 +02:00
.deploy:packages: &deploy_packages
2017-04-02 02:37:11 +02:00
stage: deploy
2019-11-12 19:03:04 +01:00
image:
name: rclone/rclone:1.50
entrypoint: [""]
before_script:
2020-06-07 01:38:05 +02:00
- apk add curl
- rclone config create fein webdav url ${DEPLOY_PATH} vendor other user ${DEPLOY_USER} pass ${DEPLOY_PASS}
2017-04-02 02:37:11 +02:00
script:
2020-06-07 01:38:05 +02:00
- 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
2016-09-07 06:23:47 +02:00
dependencies:
2020-06-07 01:38:05 +02:00
- packaging:rpm
2016-10-14 01:08:57 -04:00
tags:
2020-06-07 01:38:05 +02:00
- docker
deploy:packages:manual:
<<: *deploy_packages
when: manual
2019-06-27 21:25:18 +02:00
deploy:packages:tags:
<<: *deploy_packages
only:
2020-06-07 01:38:05 +02:00
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
2019-10-26 16:39:28 +02:00
deploy:docker:
2019-10-26 16:39:28 +02:00
stage: deploy
2020-06-07 01:38:05 +02:00
image: docker:19.03
2019-10-26 16:39:28 +02:00
before_script:
2020-06-07 01:38:05 +02:00
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
2019-10-26 16:39:28 +02:00
script:
2020-06-07 01:38:05 +02:00
- 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:
2020-06-07 01:38:05 +02:00
- docker
only:
2020-06-07 01:38:05 +02:00
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"
deploy:docker:tags:
stage: deploy
2020-06-07 01:38:05 +02:00
image: docker:19.03
before_script:
2020-06-07 01:38:05 +02:00
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
script:
2020-06-07 01:38:05 +02:00
- 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}
2019-10-26 16:39:28 +02:00
tags:
2020-06-07 01:38:05 +02:00
- docker
2019-11-12 19:03:04 +01:00
only:
2020-06-07 01:38:05 +02:00
# Only on version tags
- "/^v\\d+(\\.\\d+)+$/"