stages:
  - build
  - deploy

variables:
  # Адрес вашего реестра. Если вы используете GitLab Container Registry, можно заменить на $CI_REGISTRY_IMAGE
  REGISTRY_URL: registry.miem.hse.ru
  IMAGE_NAME: $REGISTRY_URL/edadil/ms/model
  # Неймспейс Kubernetes не используется, поскольку деплой идёт через docker-compose
  # Добавьте переменные SSH_HOST, SSH_USER, SSH_PASSWORD, а также DEPLOY_DIR – путь к docker-compose файлу на сервере
  SSH_HOST: 45.133.251.217
  SSH_USER: root
  DEPLOY_DIR: deployment  # замените на актуальный путь на сервере

before_script:
  # Загружаем kubeconfig (если он нужен для других этапов, здесь можно удалить, если не используется)
  - echo "$KUBECONFIG_DATA" > kubeconfig
  - export KUBECONFIG=$CI_PROJECT_DIR/kubeconfig

build:
  stage: build
  image: docker:latest
  services:
    - docker:dind
  tags:
    - docker
  script:
    - docker login -u "$REGISTRY_USER" -p "$REGISTRY_PASSWORD" $REGISTRY_URL
    - docker build -t $IMAGE_NAME:$CI_COMMIT_SHORT_SHA -f deployment/Dockerfile .
    - docker push $IMAGE_NAME:$CI_COMMIT_SHORT_SHA
    - docker tag $IMAGE_NAME:$CI_COMMIT_SHORT_SHA $IMAGE_NAME:latest
    - docker push $IMAGE_NAME:latest
  only:
    - master

deploy:
  stage: deploy
  image: alpine:latest
  tags:
    - docker
  before_script:
    - apk add --no-cache openssh-client sshpass docker-compose
  script:
    # Копируем docker-compose.yml
    - sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no deployment/docker-compose.yml $SSH_USER@$SSH_HOST:/root/deployment/docker-compose.yml

    # Копируем ollama-entrypoint.sh
    - sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no deployment/ollama-entrypoint.sh $SSH_USER@$SSH_HOST:/root/deployment/ollama-entrypoint.sh

    # Делаем ollama-entrypoint.sh исполняемым
    - sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "chmod +x /root/deployment/ollama-entrypoint.sh"

    # Запускаем docker-compose
    - sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "cd /root/deployment && docker-compose pull && docker-compose --profile full up -d"
  only:
    - master
  when: manual