# echo -e   # ключ -e в комманде echo включает отображение "backslash escapes"; например \n - переход на следующую строку, \t -табуляция
# echo -n   # ключ -n в команде echo сигнализирует, что после вывода информации не нужно переходить на следующую строку.

# - > переносы строк удаляются
# - | переносы строк не удаляются

# Git add
# - git submodule add -b main https://gitlab-ci-token:${CI_JOB_TOKEN}@$CI_SERVER_URL/products/vega/infra
# - git submodule sync --recursive
# - git submodule update --init --recursive

# # Прокидываем name + email, чтобы gitlab не сыпал ошибки
# - git config --global user.name "YourName"
# - git config --global user.email "YourEmail"

# # Вызываем наш скрипт, который инкрементирует версию
# - node bumpVersion.js

# # Добавляем и пушим наши изменения в ветку откуда стригерился pipeline
# - git add ./package.json
# - git commit -m "bump package.json version"
# # Используем опцию gitlab -o ci.skip, для того, чтобы наш коммит не тригерил новый pipeline
# - git push origin HEAD:$CI_COMMIT_REF_NAME -o ci.skip

.deploy-template:
  image: harbor.vimpelcom.ru/dockerhub/library/alpine
  before_script:
    - |
      sed -i s%https://dl-cdn.alpinelinux.org/%http://rhrepo.vimpelcom.ru/ext/ya/mirrors/% /etc/apk/repositories && \
      apk --no-cache add tzdata ca-certificates curl openssh-client yq jq && \
      rm -rf /var/cache/apk/*
    - which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)
    - eval $(ssh-agent -s)
    - mkdir -p ~/.ssh
    - echo -n "$TECH_SSH_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 700 ~/.ssh
    - chmod 600 ~/.ssh/id_rsa
    # https://mikefarah.gitbook.io/yq/operators/traverse-read#nested-special-characters
    - STANDS=$(echo "$STANDS" | yq '."'"${CI_COMMIT_REF_NAME}"'".[]')
    - RED=$'\033[0;31m'
    - RESET=$'\033[0m'
    - >
      if [[ -z "$STANDS" ]]; then
        echo -e "${RED}STANDS for ${CI_COMMIT_REF_NAME:=CI_COMMIT_REF_NAME} is null${RESET}"
        exit 1
      fi
    - >
      for stand in $STANDS; do
        echo "stand: ${stand}"
        ssh-keyscan "${stand}" >> ~/.ssh/known_hosts
      done
    - chmod 644 ~/.ssh/known_hosts
    # Если получилось что-то пустое
    - >
      if [[ -z "$APPVERSION" ]]; then 
        APPVERSION="0.0.1"
      fi
  script:
    - >
      for stand in $STANDS; do
        echo -e "Connect to ${stand}..." &&
        scp -o StrictHostKeyChecking=no ci/deploy/deploy.sh "dorootless@${stand}:~/deploy.sh" &&
        ssh "dorootless@${stand}" "export CONTAINER_REGISTRY=$CONTAINER_REGISTRY &&
        export PRODUCT=$PRODUCT &&
        export PRODUCT_VERSION=$PRODUCT_VERSION &&
        export IMAGE_NAME=$IMAGE_NAME &&
        chmod 700 ~/deploy.sh &&
        ~/deploy.sh ${IMAGE_NAME} &&
        rm -f ~/deploy.sh"
      done
  needs:
    - job: build-image-npm
      optional: true
