mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-16 00:00:02 +01:00
189 lines
4.4 KiB
YAML
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
|