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

189 lines
4.4 KiB
YAML

variables:
GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: recursive
PREFIX: /usr/
RSYNC_OPTS: --recursive --ignore-missing-args --chown $DEPLOY_USER:$DEPLOY_USER
DOCKER_IMAGE_DEV: villas/node-dev:${CI_COMMIT_REF_NAME}
stages:
- prepare
- build
- test
- deploy
- docker
# For some reason, GitLab CI prunes the contents of the submodules so we need to restore them.
before_script:
- git submodule foreach git checkout .
# Stage: prepare
##############################################################################
# Build docker image which is used to build & test VILLASnode
docker-dev:
stage: prepare
before_script:
# - docker login -u $DOCKER_USER -p $DOCKER_PASS -e $DOCKER_EMAIL $DOCKER_REGISTRY
script:
- make docker-dev
tags:
- shell
- linux
# Stage: build
##############################################################################
build:source:
stage: build
script:
- make
artifacts:
expire_in: 1 week
name: "${CI_PROJECT_NAME}-${CI_BUILD_REF}"
paths:
- build/release/
image: $DOCKER_IMAGE_DEV
tags:
- docker
build:docs:
stage: build
artifacts:
name: "${CI_PROJECT_NAME}-doc-${CI_BUILD_REF}"
paths:
- build/release/doc/
script:
- make doc
image: $DOCKER_IMAGE_DEV
tags:
- docker
build:packages:
stage: build
before_script:
- dnf -y config-manager --add-repo https://$DEPLOY_USER:$DEPLOY_PASS@$DEPLOY_HOST/packages/villas.repo
- dnf -y --refresh install openssl-devel libconfig-devel libnl3-devel libcurl-devel jansson-devel libxil-devel libwebsockets-devel zeromq-devel nanomsg-devel
script:
- make rpm-villas-node
artifacts:
expire_in: 1 week
name: "${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}"
paths:
- build/release/packaging/*.tar.gz
- build/release/packaging/rpm/RPMS/
image: $DOCKER_IMAGE_DEV
tags:
- docker
# Stage: test
##############################################################################
test:coverage:
stage: test
variables:
COVERAGE: "1"
script:
- make coverage
artifacts:
name: "${CI_PROJECT_NAME}-coverage-${CI_BUILD_REF}"
paths:
- build/release-coverage/coverage/
- build/release-coverage/coverage.txt
- build/release-coverage/coverage.xml
image: $DOCKER_IMAGE_DEV
coverage: '/lines: (\d+\.\d+\%)/'
tags:
- docker
test:unit:
stage: test
dependencies:
- build:source
script:
- make run-unit-tests
image: $DOCKER_IMAGE_DEV
tags:
- docker
test:integration:
stage: test
dependencies:
- build:source
script:
- make run-integration-tests
artifacts:
name: "${CI_PROJECT_NAME}-integration-tests-${CI_BUILD_REF}"
when: always
paths:
- build/release/tests/integration/
image: $DOCKER_IMAGE_DEV
tags:
- docker
test:valgrind:
stage: test
variables:
DEBUG: "1"
script:
- make run-valgrind
dependencies:
- build:source
allow_failure: true
image: $DOCKER_IMAGE_DEV
tags:
- docker
# Stage: deliver
##############################################################################
deploy:web:
stage: deploy
script:
- ssh $DEPLOY_USER@$DEPLOY_HOST mkdir -p $DEPLOY_PATH/{coverage,doc}/$CI_BUILD_REF_NAME/
- rsync $RSYNC_OPTS build/release-coverage/coverage/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/coverage/$CI_BUILD_REF_NAME/
- rsync $RSYNC_OPTS build/release/doc/html/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/doc/$CI_BUILD_REF_NAME/
- rsync $RSYNC_OPTS web/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/
dependencies:
- build:docs
- build:packages
- test:coverage
only:
- develop
tags:
- villas-deploy
deploy:packages:
stage: deploy
script:
- ssh $DEPLOY_USER@$DEPLOY_HOST mkdir -p $DEPLOY_PATH/{dist,../packages}
- rsync $RSYNC_OPTS build/release/packaging/rpm/RPMS/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/../packages/
- rsync $RSYNC_OPTS build/release/packaging/*.tar.gz $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/dist/
- ssh $DEPLOY_USER@$DEPLOY_HOST createrepo $DEPLOY_PATH/../packages
dependencies:
- build:packages
tags:
- villas-deploy
# Stage: docker
##############################################################################
deploy:docker-dev:
stage: docker
script:
- make deploy-docker-dev
tags:
- shell
- linux
deploy:docker:
stage: docker
script:
- make docker
- make deploy-docker
dependencies:
- build:packages
tags:
- shell
- linux