• Грамотно ли я написал тестовый фреймворк selenium+pageObject+testng (нужна критика)?

    SlavikF
    @SlavikF
    Что я увидел не так:

    О том, что такое паттерн Page Object в Священном Писании не записано, поэтому одни считают так правильно, а другие - иначе.

    Основная идея Page Object pattern: низкоуровневое взаимодействие с браузером выносится в Page Objects, а в тестах остаётся в основном бизнес-логика.

    В вашем случае, в методе preCondition вы открываете страницу браузера:
    driver.get("https://mail.ru/");
    Более правильно перенести это в конструктор LoginPage.

    Методы typeLogin, clickEnterPasswordButton, ... возвращают "this". Я это часто вижу. Но смысла в этом мало. Это может иметь какой-то смысл, если действие (нажатие клавиши, клик на кнопку), которое возвращают другую страницу (другого типа), да и в таких случаях зачастую можно не заморачиваться с этим.

    В остальном тесты, в свете page object pattern выглядит нормально.

    В свете логики тестов, у deleteEmail похоже есть предположение, что в ящике уже есть какое-то количество emails. А если нету? тест будет валиться.

    Thread.sleep - это обычно сразу красный флаг. Это 100% признак ненадёжного теста. В местах, где надо ждать (анимации, загрузки, ...) нужно поллить. Можно вот так:
    https://www.selenium.dev/selenium/docs/api/java/or...
    Но на самом деле вариантов много.

    Ещё вы добавили chromedriver.exe в репу.
    Бинарники в репе - это плохо.
    В вашем случае может помочь вот эта библиотека:
    https://github.com/bonigarcia/webdrivermanager

    Ещё у вас репе debug.log
    Его в репе быть не должно. Нужно убрать через .gitignore
    Да .idea туда же.

    Ещё режет глаза слово "popap". Это прям сразу видеть человек английских не знать.
    Ответ написан
    Комментировать
  • Хранить ли docker-compose в VCS?

    SlavikF
    @SlavikF
    А для чего нужны deploy.php и deploy.sh?
    Я для похожих проектов шаги для deploy помещаю именно в CI (.gitlab-ci.yml), который и делает всё что надо для деплоя.

    Вот тут пример моего Laravel PHP проекта, в котором CI делает вот эти шаги, как часть деплоя:
    - генерирует конфиг из секретных переменных окружения
    - инсталлирует зависимости
    - копирует (mv) исходники и зависимости в папку веб-сервера
    - запускает DB миграцию
    - сбрасывает кэш
    https://gitlab.com/SlavikCA/donors-crm/blob/master...

    В этом проекте у меня нет докера.
    Но если бы он и был, то не думаю, что это что-то поменяло.

    С Докером обычно делают немного другой сценарий: если сложное приложение в котором много зависимостей, какой-нибудь необычный веб конфиг и т.д., то при пуше в репу запускают CI, который собирает новый докер image из этих файлов и других зависимостей (а не просто пробрасывает PHP файлы в стандартный контейнер).
    Ответ написан
    Комментировать
  • Определённые изменения не должны уходить в master?

    SlavikF
    @SlavikF
    У вас не очень понятный вопрос.

    Но похоже вам нужно git cherry-pick
    https://git-scm.com/book/ru/v2/Appendix-C%3A-%D0%9...
    Ответ написан
    Комментировать
  • Как сохранять логи только за определенное время ELK?

    SlavikF
    @SlavikF
    ILM. Можно это настраивать из Kibana:
    Management -> Index Lifecycle Policies.

    f8418545bbf7fbc192e897a22a4ad753a22a25e6
    Ответ написан
    Комментировать
  • Как правильно отдать SSH ключ gitlab, клиенту?

    SlavikF
    @SlavikF
    отдать ключ клиенту? Или использовать ключ для авто-деплоя у клиента?

    Клиенту ключей отдавать не надо. Клиент должен сделать себе аккаунт и вы добавите его в те проекты, которые посчитаете нужным.

    Если разговор об авто-деплое, то тут зависит, что и как деплоить. Для авто-деплоя вообще не нужны ключи Гитлаба - ставите runner на нужные системы и подключаете runner к проекту.
    Ответ написан
    1 комментарий
  • Как настроить gitlab ci + vds?

    SlavikF
    @SlavikF
    Простой ответ:
    - Ставите gitlab-runner на vds
    - Пишете .gitlab-ci.yml конфигурация для проекта

    Но так как вы:
    так и не смог разобраться


    То я думаю вам надо нанять консультанта.
    Потому что у вас вопрос задан так, что похоже что вы просите написать серьезный tutorial.
    Ответ написан
    Комментировать
  • Можно ли настроить несколько проектов на одном VPS?

    SlavikF
    @SlavikF
    Предполагаю, что будет головная боль с
    1) портами
    2) конфигами

    Порты:
    - Гитлаб ставится на порты 22, 80, 443
    - cPanel наверное тоже будет ставить веб-сервер на порты 80, 443
    Получается будет конфликт.
    Да, это можно разводить конфигами, но:

    Конфиги:
    Гитлаб управиляет своими конфигами с помощью Chef, cPanel - сам.
    Если попробовать их править руками - то при каждом upgrade они могут становится невалидными или нерабочими. Может и можно сделать как надо, но это конечно головняк.
    Ответ написан
    Комментировать
  • Как разрешить сайту работать с 2 портами 80 и 443?

    SlavikF
    @SlavikF
    Браузер может запоминать, что на этом сайте есть HTTPS и даже без серверного редиректа выбирать HTTPS

    https://www.zdnet.com/article/google-is-running-an...
    Ответ написан
    Комментировать
  • Что не так с owncloud?

    SlavikF
    @SlavikF
    Трудно сказать - мало информации.

    Вангую, что проблема в конфигурации веб сервера или vhost.

    Какой сервер? Apache or Nginx? Какой конфиг vhost?

    P.S. а вообще я бы рекомендовал NextCloud вместо OwnCloud. У него и доки получше. И примеры конфигов есть.
    Ответ написан
  • Как отправить запрос к приложению, развернутому на удаленном виртуальном сервере?

    SlavikF
    @SlavikF
    http://:8082/{resource}


    Вы хотели сказать http://$HOSTNAME:8082/{resource} ?

    Я не знаком со Spring Boot, но вот типичные причины почему запрос может не прийти:
    - firewall
    - приложение слушает только на localhost, но не внешний IP

    попробуйте на самой VPS запустить curl -i http://localhost:8082/{resource}
    Ответ написан
    2 комментария
  • Непрерывная интеграция на Gitlab, сбой, как решить?

    SlavikF
    @SlavikF
    По умолчанию Gitlab использует fetch с каким-то параметром, которого нет в старых версиях GIT.

    Попробуйте поменять стратегию
    https://docs.gitlab.com/ee/ci/yaml/#git-strategy
    на
    variables:
    GIT_STRATEGY: clone
    Ответ написан
    Комментировать
  • Как сделать git-pull на сервере, сразу после git push на локальном?

    SlavikF
    @SlavikF
    Как тут уже писали, один вариант - это вебхук.

    НО git pull на продакшене - не очень хорошая идея, потому что у вас на проде будет копия репы. Это не очень хорошо и секъюрно.

    Best practice:
    - вы делаете git push в репу (или merge PR)
    - если надо, то CI система делает build
    - CI копирует нужные файлы (артифакты) на прод. С помощью rsync, scp, ftp, чего угодно. Обычно при этом на прод нужно добавить каких-то ключей, паролей и т.д., который нет в репе, но у CI они есть (из настроек, ввод пользователя, из Vault, ...)
    Ответ написан
    Комментировать
  • Nextcloud - изображение на форуме?

    SlavikF
    @SlavikF
    Это всё потому что девелоперы в Nextcloud "загоняются" насчёт security. Может оно и правильно.

    В общем, проблема в том, что если дать пользователю возможность залить фото, а потом использовать  ПРЯМОЙ линк на этот файл, то этот пользователь может что-то как-то хакнуть таким образом. Поэтому - низзя

    НО. Если из оригинальной картинки СГЕНЕРИРОВАТЬ другой preview image, - то можно.
    Для этого надо добавить /preview в конце URL. Вот так:
    https://cloud.ustim.ru/s/gdMBq4mEx63qpSz/preview
    И такой линк вроде бы должен работать на форумах и внешних сайтах.

    Другой вариант - сделать ещё один vhost на Апаче (или Nginx), у которого Directory Root указывает на вашу nextcloud/data. НО тут надо понимать, что делаешь, потому что в таком раскладе станут публичными файлы, которые вы может не хотели бы делать публичными...
    Ответ написан
    1 комментарий
  • Почему может не работать проброс портов?

    SlavikF
    @SlavikF
    Может дело в том, что кроме проброса портов ещё нужен DDNS?

    Вы от друга какой адрес открываете? Случайно не 192.168.1.13?

    Ещё может быть то, что роутер светит свою админку на порт 80, и нужно найти настройку, которая скажет, что админка нужна только на LAN.
    Ответ написан
    Комментировать
  • Как настроить деплой в Gitlab CI, чтобы разработчик не получил доступ на хост?

    SlavikF
    @SlavikF
    Да, помню как-то ломал голову над этим, но в конечном итоги оказывалось, что есть какой-то вариант, что разработчик может получить доступ к продакшн-серверу.

    Тогда я решил это тем, что у основного проекта был доступ только к staging, а для прода был форк этого проекта со своим раннером.

    Но после этого у Гитлаба добавили несколько фишек, то может теперь и есть и другой вариант.
    Сегодня я думаю можно так:
    - иметь 2 раннера: один для staging, один для production
    - раннер для production поставить разрешение запускать только на `master`
    - у разработчика нету привилегий для доступа к `master`.

    При этом подразумевается, что staging и production - это разные серверы.
    Ответ написан
    Комментировать
  • Как перенести сайт?

    SlavikF
    @SlavikF
    Судя по формату ссылок, сайт динамический, то есть страницы определяются параметрами такими как page=3.
    Скорее всего PHP.

    Поэтому скачать страницы можно (например wget), но скорее всего что-то работать будет не так.

    Вам нужны исходники, а не сгенерированные страницы. Получить их можно например через FTP.  Но похоже ваш хостер вам не даёт это делать.
    А кроме файлов ещё может быть база данных, без которой сайт может не запустится
    Ответ написан
    Комментировать
  • Ubuntu Server мониторинг сервера?

    SlavikF
    @SlavikF
    У меня есть небольшая репа в Gitlab, в которой лежат Nginx конфиги веб-сайтов и PHP конфиги, и CI job к этой репе, которая раскладывает все эти конфиги при каждом коммите. И перезапускает веб-сервер и ещё что нужно.
    Очень удобно.

    server-config:
      stage: server-config
      tags:
      - deb96-ovh
      script:
      - sudo cp --verbose --recursive etc /
      - ls -l /etc/nginx/conf.d/
      - sudo nginx -t
      # if commit message has "RESTART" - restart, else - just reload
      - if echo $CI_COMMIT_MESSAGE | grep -iqF restart; then
      -   sudo systemctl restart php7.0-fpm.service
      -   sudo systemctl restart nginx
      - else
      -   sudo systemctl reload php7.0-fpm.service
      -   sudo nginx -s reload
      - fi
    Ответ написан
    Комментировать
  • Возможно ли собрать такую систему и соединить при таких устройствах?

    SlavikF
    @SlavikF
    Возможно, конечно.

    Причём у этой колонки - два входа (jack and XLR), так что можно и без микшера.
    Надо только подобрать провода с нужными разъёмами.
    Хотя с микшером может быть немного удобней.
    Ответ написан
    Комментировать
  • Возможно ли разворачивание NextCloud и GitLab на одном сервере?

    SlavikF
    @SlavikF
    4Гб - довольно скромно,
    Но так как нагрузка небольшая - то работать будет.
    У меня похожая конфигурация работает на 6Гб в виртуалке.

    Не забудьте только, что если ставить Gitlab через Omnibus, то он сам ставит Nginx под себя и по умолчанию вешается на порты 80 и 443.
    Поэтому есть смысл NextCloud ставить после Gitlab'a и прикрутить к Гитлабовскому Nginx дополнительный конфиг для NextCloud.
    Ответ написан
    Комментировать