2016-09-07 06:23:47 +02:00
|
|
|
variables:
|
2017-04-27 09:33:53 +02:00
|
|
|
GIT_STRATEGY: fetch
|
2017-04-06 15:04:47 +02:00
|
|
|
GIT_SUBMODULE_STRATEGY: recursive
|
2016-09-27 19:27:19 -04:00
|
|
|
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
|
2016-09-27 19:27:19 -04:00
|
|
|
- test
|
2016-09-07 06:23:47 +02:00
|
|
|
- deploy
|
2017-07-02 20:39:58 +02:00
|
|
|
- docker
|
2016-09-27 19:27:19 -04:00
|
|
|
|
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 .
|
|
|
|
|
2016-09-27 19:27:19 -04:00
|
|
|
# Stage: prepare
|
|
|
|
##############################################################################
|
2016-09-07 06:23:47 +02:00
|
|
|
|
|
|
|
# Build docker image which is used to build & test VILLASnode
|
2017-03-29 08:13:44 +02:00
|
|
|
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
|
|
|
|
2016-09-27 19:27:19 -04:00
|
|
|
# Stage: build
|
|
|
|
##############################################################################
|
2016-09-07 06:23:47 +02:00
|
|
|
|
2017-07-02 20:39:58 +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 ..
|
2017-03-29 04:37:03 +02:00
|
|
|
- make
|
2016-09-07 06:23:47 +02:00
|
|
|
artifacts:
|
2017-07-02 20:39:58 +02:00
|
|
|
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
|
|
|
|
2017-07-02 20:39:58 +02: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
|
2017-03-29 08:13:44 +02:00
|
|
|
script:
|
2018-06-30 01:30:13 +02:00
|
|
|
- mkdir -p build && cd build
|
|
|
|
- cmake ..
|
|
|
|
- make package
|
2017-03-29 08:13:44 +02:00
|
|
|
artifacts:
|
2017-07-02 20:39:58 +02:00
|
|
|
expire_in: 1 week
|
2017-09-16 18:06:38 +02:00
|
|
|
name: ${CI_PROJECT_NAME}-packages-${CI_BUILD_REF}
|
2017-03-29 08:13:44 +02:00
|
|
|
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}
|
2017-03-29 08:13:44 +02:00
|
|
|
tags:
|
|
|
|
- docker
|
2017-09-16 18:06:38 +02:00
|
|
|
only:
|
|
|
|
- tags
|
|
|
|
- master
|
2017-03-29 08:13:44 +02:00
|
|
|
|
2016-09-07 06:23:47 +02:00
|
|
|
|
2016-09-27 19:27:19 -04:00
|
|
|
# Stage: test
|
|
|
|
##############################################################################
|
|
|
|
|
2017-07-02 20:39:58 +02:00
|
|
|
test:unit:
|
2016-09-27 19:27:19 -04:00
|
|
|
stage: test
|
2016-10-14 01:33:07 -04:00
|
|
|
dependencies:
|
2017-07-02 20:39:58 +02:00
|
|
|
- build:source
|
2016-09-27 19:27:19 -04:00
|
|
|
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
|
2016-09-27 19:27:19 -04:00
|
|
|
|
2017-07-02 20:39:58 +02:00
|
|
|
test:integration:
|
2016-09-27 19:27:19 -04:00
|
|
|
stage: test
|
|
|
|
dependencies:
|
2017-07-02 20:39:58 +02:00
|
|
|
- build:source
|
2016-09-27 19:27:19 -04:00
|
|
|
script:
|
2018-06-30 01:30:13 +02:00
|
|
|
- mkdir -p build && cd build
|
|
|
|
- cmake ..
|
2017-03-29 04:37:03 +02:00
|
|
|
- make run-integration-tests
|
2017-03-29 08:13:44 +02:00
|
|
|
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
|
2017-03-29 08:13:44 +02:00
|
|
|
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-07-02 20:39:58 +02:00
|
|
|
##############################################################################
|
2017-03-31 21:20:36 +02:00
|
|
|
|
2017-07-02 20:39:58 +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:
|
2017-07-02 20:39:58 +02:00
|
|
|
- build:docs
|
2017-05-10 13:30:54 +02:00
|
|
|
only:
|
2017-09-16 18:06:38 +02:00
|
|
|
- tags
|
2017-04-02 02:37:11 +02:00
|
|
|
tags:
|
|
|
|
- villas-deploy
|
|
|
|
|
2017-07-02 20:39:58 +02:00
|
|
|
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
|
2017-09-16 17:28:06 +02:00
|
|
|
only:
|
2017-09-16 18:06:38 +02:00
|
|
|
- tags
|
2017-07-02 20:39:58 +02:00
|
|
|
|
|
|
|
# Stage: docker
|
|
|
|
##############################################################################
|
|
|
|
|
2017-11-20 14:30:17 +01:00
|
|
|
docker:
|
2017-07-02 20:39:58 +02:00
|
|
|
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}
|
2017-09-16 17:28:06 +02:00
|
|
|
tags:
|
|
|
|
- shell
|
|
|
|
- linux
|