stages:
  - test
  - sonar-analysis
  - 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
  except:
    - master
    - rec
    - dev
  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
  services:
    - ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/:18.09-dind
  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:14.15.4
  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

# code_analysis:
#   image: registry.forge.grandlyon.com/apoyen2/sonnar-scanner-gl:master
#   services:
#     - docker:18.09-dind
#   stage: sonar-analysis
#   only:
#     - dev
#     - merge_requests
#   before_script:
#     - export NODE_PATH=$NODE_PATH:`npm root -g`
#     - npm install -g typescript
#   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.exclusions=scripts/**,**/*mock.*.ts,**/*spec.ts
#       -Dsonar.login=${SONAR_TOKEN}
#       -Dsonar.qualitygate.wait=true

mr:
  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 .