stages: - test - quality - build - deploy default: services: - name: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09-dind alias: docker variables: DEPENDENCY_PROXY: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/ build: variables: DOCKER_TLS_CERTDIR: '' DOCKER_HOST: tcp://docker:2375/ DOCKER_DRIVER: overlay2 image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09 only: - dev - rec - master stage: build script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" . - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" build_branch: variables: DOCKER_TLS_CERTDIR: '' DOCKER_HOST: tcp://docker:2375/ DOCKER_DRIVER: overlay2 image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09 stage: build only: - merge_requests script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build --pull -t "$CI_REGISTRY_IMAGE/feat:$CI_COMMIT_REF_SLUG" --build-arg conf=prod . - docker push "$CI_REGISTRY_IMAGE/feat:$CI_COMMIT_REF_SLUG" build-release: variables: DOCKER_TLS_CERTDIR: '' DOCKER_HOST: tcp://docker:2375/ DOCKER_DRIVER: overlay2 image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09 stage: build only: - tags script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build --pull -t "$CI_REGISTRY_IMAGE/tags:$CI_COMMIT_TAG" --build-arg conf=prod . - docker push "$CI_REGISTRY_IMAGE/tags:$CI_COMMIT_TAG" deploy_dev: stage: deploy tags: - deploy only: - dev script: - cd /home/mps/ram - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker-compose pull service-ram - docker-compose up -d --force-recreate service-ram - docker system prune -a -f environment: name: dev url: https://resin-dev.grandlyon.com test: stage: test image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/node:18.17.0 services: - name: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/elasticsearch:7.16.2 alias: elasticsearch command: ['bin/elasticsearch', '-Expack.security.enabled=false', '-Ediscovery.type=single-node'] before_script: - export GHOST_HOST_AND_PORT=http://localhost:2368 - export GHOST_ADMIN_API_KEY=60142bc9e33940000156bccc:6217742e2671e322612e89cac9bab61fcd01822709fe5d8f5e6a5b3e54d5e6bb - export SALT=$TEST_SALT - export ELASTICSEARCH_NODE=http://elasticsearch:9200 script: - npm i - npm run test:cov coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/ artifacts: when: always reports: junit: - junit.xml only: - dev - merge_requests sonarqube: stage: quality only: - dev image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4 variables: SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache GIT_DEPTH: '0' # T cache: key: '${CI_JOB_NAME}' paths: - .sonar/cache script: - > sonar-scanner -Dsonar.projectName=${SONAR_PROJECT_KEY} -Dsonar.projectVersion=1.0 -Dsonar.sourceEncoding=UTF-8 -Dsonar.projectBaseDir=. -Dsonar.host.url=${SONAR_URL} -Dsonar.projectKey=${SONAR_PROJECT_KEY} -Dsonar.login=${SONAR_TOKEN} -Dsonar.cpd.exclusions=test/**,scripts/**,src/**/*.spec.ts* -Dsonar.exclusions=test/**,scripts/**,src/**/*.spec.ts*,src/migrations/scripts/** -Dsonar.qualitygate.wait=true sonarqube-mr: stage: quality only: - merge_requests image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4 variables: SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache GIT_DEPTH: '0' # T cache: key: '${CI_JOB_NAME}' paths: - .sonar/cache script: - > sonar-scanner -Dsonar.projectName=${SONAR_PROJECT_KEY} -Dsonar.projectVersion=1.0 -Dsonar.sourceEncoding=UTF-8 -Dsonar.projectBaseDir=. -Dsonar.host.url=${SONAR_URL} -Dsonar.projectKey=${SONAR_PROJECT_KEY} -Dsonar.login=${SONAR_MR_TOKEN} -Dsonar.cpd.exclusions=test/**,scripts/**,src/**/*.spec.ts* -Dsonar.exclusions=test/**,scripts/**,src/**/*.spec.ts*,src/migrations/scripts/** -Dsonar.qualitygate.wait=true