stages:
  - sonar-analysis
  - build
  - deploy

build_branch:
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
  services:
    - docker:18.09-dind
  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" --build-arg conf=prod .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"

build:
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
  services:
    - docker:18.09-dind
  stage: build
  only:
    - master
    - recette
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" --build-arg conf=prod .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"

build_dev:
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
  services:
    - docker:18.09-dind
  stage: build
  only:
    - dev
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --pull -t "$CI_REGISTRY_IMAGE:dev" --build-arg conf=dev .
    - docker push "$CI_REGISTRY_IMAGE:dev"

build_json_server:
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
  services:
    - docker:18.09-dind
  stage: build
  only:
    - dev
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --pull -t "$CI_REGISTRY_IMAGE:json_server"  ./api/
    - docker push "$CI_REGISTRY_IMAGE:json_server"
  when: manual

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 web-app
    - docker-compose up -d web-app
    - docker system prune -a -f

deploy_mobile:
  stage: deploy
  tags:
    - deploy
  only:
    - mobile
  script:
    - cd /home/mps/ram
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker-compose pull web-app
    - docker-compose up -d web-app
    - docker system prune -a -f

deploy_rec:
  stage: deploy
  tags:
    - deploy
  only:
    - recette
  script:
    - cd /home/mps/ram
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker-compose pull web-app-rec
    - docker-compose up -d web-app-rec
    - docker system prune -a -f

# code_analysis:
#   image: skilldlabs/sonar-scanner:3.4.0
#   services:
#     - docker:18.09-dind
#   stage: sonar-analysis
#   only:
#     - dev
#   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.login=${SONAR_TOKEN}

mr:
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
  services:
    - docker:18.09-dind
  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:dev" --build-arg conf=dev .

# Job for auto building pwa in case of issue
# Juste create a new branche 'pwa'
pwa-build:
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
  services:
    - docker:18.09-dind
  stage: build
  only:
    - feat/poc-pwa
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --pull -t "$CI_REGISTRY_IMAGE:pwa" --build-arg conf=dev .
    - docker push "$CI_REGISTRY_IMAGE:pwa"