# Official framework image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/node/tags/
image: node:10-stretch

# Only needed when using a docker container to run your tests in.
# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service
services:
   - postgres

# This folder is cached between builds
cache:
  paths:
  - node_modules/
  - ldap_connexion_config.json

stages:
  - install
  - test
  - build
  - deploy

### Jobs ###

# Install dependencies, compile the bundle.js,
# make migrations on and seed the db
install-dependencies:
  stage: install
  script:
    - npm ci
  artifacts:
    paths:
      - node_modules/

build:
  stage: build
  before_script:
    - export NODE_ENV=staging
    - echo $LDAP_CONN_CONFIG > ldap_connexion_config.json
  script: npm run build
  artifacts:
    paths:
      - build/

deploy-staging:
  stage: deploy
  only:
    - stable
  before_script:
    - export NODE_ENV=staging
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$STAGING_PRIVATE_KEY")
    - mkdir -p ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
  script:
    - ssh -p22 sigma-dev@129.104.201.10 "mkdir -p /opt/sigma-back-dev"
    - ssh -p22 sigma-dev@129.104.201.10 "rm -rf /opt/sigma-back-dev/build"
    - ssh -p22 sigma-dev@129.104.201.10 "rm -rf /opt/sigma-back-dev/assets"
    - scp -p22 -r build/ sigma-dev@129.104.201.10:/opt/sigma-back-dev/build
    - scp -p22 -r assets/ sigma-dev@129.104.201.10:/opt/sigma-back-dev/assets
    - scp -p22 -r db/ sigma-dev@129.104.201.10:/opt/sigma-back-dev/db
    - scp -p22 knexfile.js sigma-dev@129.104.201.10:/opt/sigma-back-dev/knexfile.js
    - ssh -p22 sigma-dev@129.104.201.10 "cd /opt/sigma-back-dev && knex migrate:latest && knex seed:run"
    - scp -p22 package.json "package-lock.json" ldap_config.json ldap_connexion_config.json sigma-back-dev.service sigma-dev@129.104.201.10:/opt/sigma-back-dev/
  environment:
    name: staging
    url: http://129.104.201.10:3000