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

167 lines
3.9 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
2018-06-30 10:38:20 +02:00
DOCKER_TAG: $CI_COMMIT_TAG
2017-10-18 13:16:21 +02:00
DOCKER_TAG_DEV: ${CI_COMMIT_REF_NAME}
2018-06-30 10:38:20 +02:00
DOCKER_IMAGE: villas/node
2017-07-08 13:26:37 +02:00
DOCKER_IMAGE_DEV: villas/node-dev
2016-09-07 06:23:47 +02:00
stages:
- prepare
- build
2018-06-30 11:54:55 +02:00
- build2
- test
2016-09-07 06:23:47 +02:00
- deploy
- docker
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:
- git submodule foreach git checkout .
# Stage: prepare
##############################################################################
2016-09-07 06:23:47 +02:00
# Build docker image which is used to build & test VILLASnode
docker-dev:
2016-09-07 06:23:47 +02:00
stage: prepare
script:
2018-06-30 01:30:13 +02:00
- docker build -f packaging/docker/Dockerfile.dev -t ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV} .
2016-10-14 01:08:57 -04:00
tags:
- shell
- linux
2016-09-07 06:23:47 +02:00
# Stage: build
##############################################################################
2016-09-07 06:23:47 +02:00
build:source:
2016-09-07 06:23:47 +02:00
stage: build
script:
2018-06-30 01:30:13 +02:00
- mkdir -p build && cd build
- cmake ..
- make
2016-09-07 06:23:47 +02:00
artifacts:
expire_in: 1 week
2017-09-16 18:06:38 +02:00
name: ${CI_PROJECT_NAME}-${CI_BUILD_REF}
2016-09-07 06:23:47 +02:00
paths:
2018-06-30 10:38:09 +02:00
- build/
2017-09-16 18:06:38 +02:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
2016-10-14 01:08:57 -04:00
tags:
- docker
2016-09-09 23:54:00 -04:00
build:docs:
2016-09-07 06:23:47 +02:00
stage: build
artifacts:
2017-09-16 18:06:38 +02:00
name: ${CI_PROJECT_NAME}-doc-${CI_BUILD_REF}
2016-09-07 06:23:47 +02:00
paths:
2018-06-30 10:38:09 +02:00
- build/doc/
2016-09-07 06:23:47 +02:00
script:
2018-06-30 01:30:13 +02:00
- mkdir -p build && cd build
- cmake ..
2016-09-07 06:23:47 +02:00
- make doc
2017-09-16 18:06:38 +02:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
2016-10-14 01:08:57 -04:00
tags:
- docker
2017-09-16 18:06:38 +02:00
only:
- tags
- master
2016-10-14 01:08:57 -04:00
2018-06-30 11:54:55 +02:00
build2:packages:
stage: build2
dependencies:
- build:docs
script:
2018-06-30 01:30:13 +02:00
- mkdir -p build && cd build
- cmake ..
- make package
artifacts:
expire_in: 1 week
2017-09-16 18:06:38 +02:00
name: ${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}
paths:
2018-06-30 01:30:13 +02:00
- build/*.tar.gz
- build/*.rpm
2017-09-16 18:06:38 +02:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- docker
2017-09-16 18:06:38 +02:00
only:
- tags
- master
2016-09-07 06:23:47 +02:00
# Stage: test
##############################################################################
test:unit:
stage: test
2016-10-14 01:33:07 -04:00
dependencies:
- build:source
script:
2018-06-30 01:30:13 +02:00
- mkdir -p build && cd build
- cmake ..
2018-05-13 14:23:48 +02:00
- make run-unit-tests
2017-09-16 18:06:38 +02:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
2016-10-14 01:08:57 -04:00
tags:
- docker
test:integration:
stage: test
dependencies:
- build:source
script:
2018-06-30 01:30:13 +02:00
- mkdir -p build && cd build
- cmake ..
- make 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:
2017-03-31 21:20:36 +02:00
- build/release/tests/integration/
2017-09-16 18:06:38 +02:00
image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
2016-10-14 01:08:57 -04:00
tags:
- docker
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
script:
2017-09-16 18:06:38 +02:00
- ssh ${DEPLOY_USER}@${DEPLOY_HOST} mkdir -p ${DEPLOY_PATH}/{coverage,doc}/${CI_BUILD_REF_NAME}/
2018-06-30 01:30:13 +02:00
- rsync ${RSYNC_OPTS} build/doc/html/ ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/doc/$CI_BUILD_REF_NAME/
2017-09-16 18:06:38 +02:00
- rsync ${RSYNC_OPTS} web/ ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/
2017-04-02 02:37:11 +02:00
dependencies:
- build:docs
only:
2017-09-16 18:06:38 +02:00
- tags
2017-04-02 02:37:11 +02:00
tags:
- villas-deploy
deploy:packages:
2017-04-02 02:37:11 +02:00
stage: deploy
script:
2017-09-16 18:06:38 +02:00
- ssh ${DEPLOY_USER}@${DEPLOY_HOST} mkdir -p ${DEPLOY_PATH}/{dist,../packages}
2018-06-30 01:30:13 +02:00
- rsync ${RSYNC_OPTS} build/*.rpm ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/../packages/x86_64/
- rsync ${RSYNC_OPTS} build/*.tar.gz ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/dist/
2017-09-16 18:06:38 +02:00
- ssh ${DEPLOY_USER}@${DEPLOY_HOST} createrepo ${DEPLOY_PATH}/../packages
2016-09-07 06:23:47 +02:00
dependencies:
2018-06-30 11:54:55 +02:00
- build2:packages
2016-10-14 01:08:57 -04:00
tags:
2016-10-14 01:33:07 -04:00
- villas-deploy
only:
2017-09-16 18:06:38 +02:00
- tags
# Stage: docker
##############################################################################
2017-11-20 14:30:17 +01:00
docker:
stage: docker
script:
2018-06-30 10:38:20 +02:00
- docker build -f packaging/docker/Dockerfile.app -t ${DOCKER_IMAGE}:${DOCKER_TAG} .
- docker push ${DOCKER_IMAGE}:${DOCKER_TAG}
- docker push ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
tags:
- shell
- linux