image: node:11

stages:
 - integration
 - acceptance
 - release
 - deployment

## TESTING ##

## VALIDATION ##

test1:
  stage: integration
  environment:
    name: test1
    url: https://test1.startinblox.com
  script:
    - echo "$APP_CONFIG_TEST1" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* test1@astral.startinblox.com:~/front/
  only:
    - /^feature\/.*/
  when: manual
  tags:
    - deploy

test2:
  stage: integration
  environment:
    name: test2
    url: https://test2.startinblox.com
  script:
    - echo "$APP_CONFIG_TEST2" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* test2@astral.startinblox.com:~/front/
  only:
    - /^feature\/.*/
  when: manual
  tags:
    - deploy

test3:
  stage: integration
  environment:
    name: test3
    url: https://test3.startinblox.com
  script:
    - echo "$APP_CONFIG_TEST3" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* test3@astral.startinblox.com:~/front/
  only:
    - /^feature\/.*/
  when: manual
  tags:
    - deploy

stg1:
  stage: acceptance
  environment:
    name: stg1
    url: https://stg1.startinblox.com
  script:
    - echo "$APP_CONFIG_STG1" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* stg1@astral.startinblox.com:~/front/
  only:
    - /^release\/.*/
  when: manual
  tags:
    - deploy

stg2:
  stage: acceptance
  environment:
    name: stg2
    url: https://stg2.startinblox.com
  script:
    - echo "$APP_CONFIG_STG2" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* stg2@astral.startinblox.com:~/front/
  only:
    - /^release\/.*/
  when: manual
  tags:
    - deploy

## RELEASE TAGGING ##

publish:
  stage: release
  script:
    - npm install -g semantic-release@v17 @semantic-release/gitlab
    - semantic-release
  only:
    - master
  tags:
    - deploy

## LIVE DEPLOYMENTS ##

alpha:
  stage: deployment
  environment:
    name: alpha
    url: https://alpha.happy-dev.fr
  script:
    - echo "$APP_CONFIG_ALPHA" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* alpha@ssh-alpha.happy-dev.fr:~/www/
  only:
    - master
  when: manual
  tags:
    - deploy

community:
  stage: deployment
  environment:
    name: community
    url: https://community.startinblox.com
  script:
    - echo "$APP_CONFIG_COMMUNITY" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* community@astral.startinblox.com:~/front/
  only:
    - master
  when: manual
  tags:
    - deploy

etuc:
  stage: deployment
  environment:
    name: etuc
    url: https://app.digitalplatformobservatory.org
  script:
    - echo "$APP_CONFIG_DIGITALPLATFORMOBSERVATORY" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* etuc@ssh-etuc.happy-dev.fr:~/sib/www/
  only:
    - master
  when: manual
  tags:
    - deploy

nantes:
  stage: deployment
  environment:
    name: nantes
    url: https://app.nantes.happy-dev.fr
  script:
    - echo "$APP_CONFIG_NANTESHD" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* nantes@ssh-nantes.happy-dev.fr:~/sib/www/
  only:
    - master
  when: manual
  tags:
    - deploy

paris:
  stage: deployment
  environment:
    name: paris
    url: https://app.paris.happy-dev.fr
  script:
    - echo "$APP_CONFIG_PARIS" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* paris@ssh-paris.happy-dev.fr:~/sib/www/
  only:
    - master
  when: manual
  tags:
    - deploy

toulouse:
  stage: deployment
  environment:
    name: toulouse
    url: https://smart-toulouse.happy-dev.fr
  script:
    - echo "$APP_CONFIG_TOULOUSE" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm install
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* smart-toulouse@ssh-smart-toulouse.happy-dev.fr:~/www/
  only:
    - master
  when: manual
  tags:
    - deploy
