variables:
  LOCAL_DIR: public

stages: 
 - build
 - test_deployment
 - production_deployment

.sftp: &sftp_template
  image: ${CI_REGISTRY_IMAGE}/ubuntu_sftp
  tags:
    - wasenweiler.sit-servers.net
  script:
    - mkdir -p ~/.ssh
    - echo "${SFTP_KEY}" > ~/.ssh/id_rsa
    - echo "${SFTP_HOSTCERT}" > ~/.ssh/known_hosts
    - chmod 600 ~/.ssh/*
    - mv ${LOCAL_DIR} ${REMOTE_DIR}
    - >
      if [ ! -z "${PREVIEW}" ]; then
      find ${REMOTE_DIR} -type f -print0 | xargs -0 sed -i 's;</body>;<script src="/.version.js"></script></body>;g';
      echo "document.body.innerHTML += '<div style=\"position:fixed; bottom:60px; right:-60px; background-color:#d34; padding: 6px 100px; transform: rotate(-45deg); border-top: 1px solid #400; border-bottom: 1px solid #400;\"><a href=\"${CI_PROJECT_URL}/commit/${CI_COMMIT_SHA}\" style=\"color:#fff;\">Preview: ${CI_COMMIT_SHA:0:8}</a></div>';" > ${REMOTE_DIR}/.version.js;
      fi;

    - sftp ${SFTP_USERNAME}@${SFTP_HOST} <<< "put -r ${REMOTE_DIR}"


brunch_build:
  stage: build
  image: node
  before_script:
    - npm i -g brunch
  script:
    - npm i
    - brunch b --production
  artifacts:
    paths:
      - public/*
    expire_in: 3 days

test_deploy: 
  stage: test_deployment
  dependencies:
    - brunch_build
  variables:
    SFTP_USERNAME: ${TEST_USERNAME}
    SFTP_KEY: ${TEST_KEY}
    SFTP_HOST: ${TEST_HOST}
    SFTP_HOSTCERT: ${TEST_HOSTCERT}
    REMOTE_DIR: ${TEST_DIR}
    GIT_STRATEGY: none
    PREVIEW: "true"

  environment:
    name: Preview
    url: https://longroute.preview.sauerburger.com/

  <<: *sftp_template

production_deploy: 
  stage: production_deployment
  dependencies:
    - brunch_build
  variables:
    SFTP_USERNAME: ${PRODUCTION_USERNAME}
    SFTP_KEY: ${PRODUCTION_KEY}
    SFTP_HOST: ${PRODUCTION_HOST}
    SFTP_HOSTCERT: ${PRODUCTION_HOSTCERT}
    REMOTE_DIR: ${PRODUCTION_DIR}
    GIT_STRATEGY: none

  only:
    - master
  when: manual

  environment:
    name: Production
    url: https://longroute.sauerburger.com/

  <<: *sftp_template