linagora-rse
Version:
379 lines (348 loc) • 10.9 kB
YAML
stages:
- prepare
- linters
- test
- test-e2e
- build
- swagger
- deploy
.cache-tpl: &cache-tpl
key: "$CI_COMMIT_REF_SLUG"
paths:
- node_modules
- frontend/components
policy: pull
.curl-tpl: &curl-tpl
variables:
GIT_STRATEGY: none
tags:
- curl
before_script:
- apk add --no-cache curl jq
.build-pkg-tpl: &build-pkg-tpl
<<: *curl-tpl
only:
- master@linagora/lgs/openpaas/esn
except:
variables:
- $SKIP_BUILD_PKG
.test-template: &test-template
image: node:8
stage: test
tags:
- docker
cache:
<<: *cache-tpl
variables:
TZ: "America/New_York"
before_script:
- npm install -g grunt-cli
- 'echo "INFO: NB node packages : $(ls node_modules | wc -l)"'
- 'echo "INFO: NB bower packages : $(ls frontend/components | wc -l)"'
except:
variables:
- $SKIP_TESTS
refs:
- tags@linagora/lgs/openpaas/esn
.test-template-svc: &test-template-svc
<<: *test-template
services:
- name: elasticsearch:2.3.2
alias: elasticsearch
- name: mongo:3.2.0
alias: mongo
- name: redis:latest
alias: redis
- name: rabbitmq:3.6.5-management
alias: rabbitmq
variables:
MONGO_HOST: mongo
MONGO_PORT: 27017
AMQP_HOST: rabbitmq
AMQP_PORT: 5672
ELASTICSEARCH_HOST : elasticsearch
ELASTICSEARCH_PORT: 9200
REDIS_HOST: redis
REDIS_PORT: 6379
prepare:
image: node:8
stage: prepare
tags:
- docker
cache:
<<: *cache-tpl
policy: pull-push
script:
- npm install
# Weird behaviour: at the time, npm postinstall was not called.
- ./node_modules/.bin/bower install --allow-root
- 'echo "INFO: NB node packages : $(ls node_modules | wc -l)"'
- 'echo "INFO: NB bower packages : $(ls frontend/components | wc -l)"'
except:
variables:
- $SKIP_PREPARE
linters:
<<: *test-template
stage: linters
script:
- grunt -v linters
except:
variables:
- $SKIP_LINTERS
refs:
- tags@linagora/lgs/openpaas/esn
check_author:
image: docker-registry.linagora.com:5000/lgs-releases/gitlab-integrity-checks:latest
stage: linters
variables:
GIT_DEPTH: "1"
tags:
- ultralight
script:
- check_author.py check "$GITLAB_USER_EMAIL" "$GITLAB_USER_NAME" --no-accents
except:
refs:
- master@linagora/lgs/openpaas/esn
- tags@linagora/lgs/openpaas/esn
- /^release-.*/@linagora/lgs/openpaas/esn
####### tests without services requirements
frontend-test:
<<: *test-template
script:
- grunt -v test-frontend
modules-frontend-test:
<<: *test-template
script:
- npm install
# Weird behaviour: at the time, npm postinstall was not called.
- ./node_modules/.bin/bower install --allow-root
- grunt -v test-modules-frontend
- TZ="Pacific/Kiritimati" grunt -v test-modules-frontend
- TZ="Pacific/Midway" grunt -v test-modules-frontend
- TZ="Pacific/Chatham" grunt -v test-modules-frontend
unit-backend-test:
<<: *test-template
script:
- grunt -v --chunk=1 test-unit-backend
modules-unit-backend-test:
<<: *test-template
script:
- grunt -v --chunk=1 test-modules-unit-backend
####### tests with services requirements
unit-storage-test:
<<: *test-template-svc
script:
- grunt -v --chunk=1 gitlab-test-unit-storage
- grunt -v --chunk=1 gitlab-test-modules-unit-storage
modules-midway-test:
<<: *test-template-svc
script:
- grunt -v --chunk=1 gitlab-test-modules-midway
midway-backend-test:
<<: *test-template-svc
script:
- grunt --chunk=1 -v gitlab-test-midway-backend
# Why is it deactivated ?
# This job try to build and test everything !!!
.test-e2e:
stage: test-e2e
before_script:
- export TZ=America/New_York
- . ~/.nvm/nvm.sh && nvm use 8
- npm install -g grunt-cli
cache:
<<: *cache-tpl
script:
- export VIDEO=true
- export VIDEO_FIREFOX_NAME=firefox-$CI_JOB_ID
- export VIDEO_CHROME_NAME=chrome-$CI_JOB_ID
- export VIDEO_DIR="$PWD/e2e-videos"
- npm install
- grunt test-e2e-clean
- grunt test-e2e-prepare $DOCKER_OPTIONS
- BROWSER="firefox" VIDEO_FILE_NAME=$VIDEO_FIREFOX_NAME grunt test-e2e $DOCKER_OPTIONS
- BROWSER="chrome" VIDEO_FILE_NAME=$VIDEO_CHROME_NAME grunt test-e2e $DOCKER_OPTIONS
allow_failure: true
build_pkg_deb_openpaas_jessie:
<<: *build-pkg-tpl
stage: build
script:
- curl -s -X POST
-F "token=${BUILD_PACKAGE_CI_TOKEN}"
-F "ref=master"
-F "variables[REPO]=https://ci.linagora.com/linagora/lgs/openpaas/esn.git"
-F "variables[VERSION_FILE]=package.json"
-F "variables[PACKAGE_NAME]=openpaas"
-F "variables[DOCKERFILE]=debian/jessie/openpaas/Dockerfile"
https://ci.linagora.com/api/v4/projects/338/trigger/pipeline | jq .
build_pkg_deb_openpaas_stretch:
<<: *build-pkg-tpl
stage: build
script:
- curl -s -X POST
-F "token=${BUILD_PACKAGE_CI_TOKEN}"
-F "ref=master"
-F "variables[REPO]=https://ci.linagora.com/linagora/lgs/openpaas/esn.git"
-F "variables[VERSION_FILE]=package.json"
-F "variables[PACKAGE_NAME]=openpaas"
-F "variables[DOCKERFILE]=debian/stretch/openpaas/Dockerfile"
https://ci.linagora.com/api/v4/projects/338/trigger/pipeline | jq .
build_pkg_rpm_openpaas:
<<: *build-pkg-tpl
stage: build
script:
- curl -s -X POST
-F "token=${BUILD_PACKAGE_CI_TOKEN}"
-F "ref=master"
-F "variables[REPO]=https://ci.linagora.com/linagora/lgs/openpaas/esn.git"
-F "variables[VERSION_FILE]=package.json"
-F "variables[PACKAGE_NAME]=openpaas"
-F "variables[DOCKERFILE]=redhat/7/openpaas/Dockerfile"
https://ci.linagora.com/api/v4/projects/338/trigger/pipeline | jq .
build_pkg_deb_openpaas-james_jessie:
<<: *build-pkg-tpl
stage: build
script:
- curl -s -X POST
-F "token=${BUILD_PACKAGE_CI_TOKEN}"
-F "ref=master"
-F "variables[REPO]=https://ci.linagora.com/linagora/lgs/openpaas/esn.git"
-F "variables[VERSION_FILE]=package.json"
-F "variables[PACKAGE_NAME]=openpaas-james"
-F "variables[DOCKERFILE]=debian/jessie/openpaas-james/Dockerfile"
https://ci.linagora.com/api/v4/projects/338/trigger/pipeline | jq .
build_pkg_deb_openpaas-james_stretch:
<<: *build-pkg-tpl
stage: build
script:
- curl -s -X POST
-F "token=${BUILD_PACKAGE_CI_TOKEN}"
-F "ref=master"
-F "variables[REPO]=https://ci.linagora.com/linagora/lgs/openpaas/esn.git"
-F "variables[VERSION_FILE]=package.json"
-F "variables[PACKAGE_NAME]=openpaas-james"
-F "variables[DOCKERFILE]=debian/stretch/openpaas-james/Dockerfile"
https://ci.linagora.com/api/v4/projects/338/trigger/pipeline | jq .
build_pkg_rpm_openpaas-james:
<<: *build-pkg-tpl
stage: build
script:
- curl -s -X POST
-F "token=${BUILD_PACKAGE_CI_TOKEN}"
-F "ref=master"
-F "variables[REPO]=https://ci.linagora.com/linagora/lgs/openpaas/esn.git"
-F "variables[VERSION_FILE]=package.json"
-F "variables[PACKAGE_NAME]=openpaas-james"
-F "variables[DOCKERFILE]=redhat/7/openpaas-james/Dockerfile"
https://ci.linagora.com/api/v4/projects/338/trigger/pipeline | jq .
# Maybe this stage should not use test-template,
# the job will not created for tag pipeline.
swagger:
<<: *test-template
stage: swagger
script:
- grunt swagger-generate
artifacts:
paths:
- ./doc/REST_API/swagger/swagger.json
deploy-swagger:
stage: deploy
tags:
- deployment
- api.open-paas.org
- shell
environment:
name: api
url: https://api.open-paas.org
only:
- master@linagora/lgs/openpaas/esn
script:
- perl -i -pe's/"host":"localhost:8080"/"schemes":["https"],"host":"demo.open-paas.org"/' ./doc/REST_API/swagger/swagger.json
- cp ./doc/REST_API/swagger/swagger.json /var/www/html
deploy-dev:
stage: deploy
tags:
- dev.open-paas.org
- deployment
environment:
name: dev
url: https://dev.open-paas.org
only:
- master@linagora/lgs/openpaas/esn
script:
- cd /srv/rse.dev
- git fetch --all
- git checkout ${CI_COMMIT_SHA}
- npm install --ignore-scripts --production
- npm update --production
- npm prune
- bower install --production
- bower prune
- git checkout -- .
- sudo /etc/init.d/rse.dev restart
.build-docker-tpl: &build-docker-tpl
image: docker-registry.linagora.com:5000/linshare-snapshots/linshare-dind:latest
tags:
- docker
services:
- name: docker-registry.linagora.com:5000/linshare-snapshots/linshare-dind:latest
alias: docker-dind
docker-snapshot:
<<: *build-docker-tpl
stage: build
variables:
DOCKER_HOST: "tcp://docker-dind"
DOCKER_IMAGE_PRIVATE: "docker-registry.linagora.com:5000/openpaas-snapshots/openpaas-esn"
script:
- guess-version.sh guest
- source version.env
- docker-tag-computing.sh ${VERSION} docker-tag-and-push.env
- docker login -u ${REGISTRY_USER} -p ${REGISTRY_TOKEN} docker-registry.linagora.com:5000
- docker build . -t build:latest
- docker-tag-and-push.sh build:latest ${DOCKER_IMAGE_PRIVATE}
- docker logout
only:
- master@linagora/lgs/openpaas/esn
- /^release-.*/@linagora/lgs/openpaas/esn
except:
variables:
- $SKIP_BUILD_DOCKER
docker-release:
<<: *build-docker-tpl
stage: build
variables:
DOCKER_HOST: "tcp://docker-dind"
DOCKER_IMAGE_PRIVATE: "docker-registry.linagora.com:5000/openpaas-releases/openpaas-esn"
DOCKER_IMAGE_PUBLIC: "linagora/esn"
script:
- docker-tag-computing.sh ${CI_COMMIT_TAG} docker-tag-and-push.env
- docker login -u ${REGISTRY_USER_RELEASE} -p ${REGISTRY_TOKEN_RELEASE} docker-registry.linagora.com:5000
- docker login -u ${HUB_DOCKER_USER} -p ${HUB_DOCKER_TOKEN}
- docker build . -t build:latest
- docker-tag-and-push.sh build:latest ${DOCKER_IMAGE_PRIVATE} ${DOCKER_IMAGE_PUBLIC}
- docker logout
only:
- tags@linagora/lgs/openpaas/esn
except:
variables:
- $SKIP_BUILD_DOCKER
docker-mark-as-latest-from-tag:
<<: *build-docker-tpl
stage: deploy
variables:
GIT_STRATEGY: none
DOCKER_HOST: "tcp://docker-dind"
DOCKER_IMAGE_PRIVATE: "docker-registry.linagora.com:5000/openpaas-releases/openpaas-esn"
DOCKER_IMAGE_PUBLIC: "linagora/esn"
script:
- docker login -u ${REGISTRY_USER_RELEASE} -p ${REGISTRY_TOKEN_RELEASE} docker-registry.linagora.com:5000
- docker login -u ${HUB_DOCKER_USER} -p ${HUB_DOCKER_TOKEN}
- docker-tag-computing.sh ${CI_COMMIT_TAG} docker-tags.env
- source docker-tags.env
- docker pull ${DOCKER_IMAGE_PRIVATE}:${DOCKER_TAG}
- export DOCKER_TAGS=latest
- docker-tag-and-push.sh ${DOCKER_IMAGE_PRIVATE}:${DOCKER_TAG} ${DOCKER_IMAGE_PRIVATE} ${DOCKER_IMAGE_PUBLIC}
- docker logout
when: manual
only:
- tags@linagora/lgs/openpaas/esn