Ответы пользователя по тегу Непрерывная интеграция
  • Что выбрать для CI/CD проектов на .net?

    vabka
    @vabka Куратор тега .NET
    Токсичный шарпист
    Jenkins:
    - Бесплатный
    - Можно развернуть на Windows, что тебе нужно для net framework

    Ещё бы порекомендовал Teamcity - вроде первые несколько раннеров у него тоже бесплатные и он достаточно хорошо с .net интегрирован
    Ответ написан
    Комментировать
  • Что поставить на сервер для синхронизации с GitHub?

    vabka
    @vabka
    Токсичный шарпист
    Установи на сервер git for windows - этого будет достаточно.
    Если нужно будет часто с сервера работать с функциями самого гитхаба (не путать с гитом), то тогда ещё github cli
    Ответ написан
  • Нужен ли отдельный linux user для сайта?

    vabka
    @vabka
    Токсичный шарпист
    Какой существует бестпрактис при разворачивании lemp стека с точки зрения пользователей.

    Обязательно нужен отдельный пользователь для работы веб-сервера, субд, php-fpm, redis итд - каждому из них выдать доступ только к тем директориям и файлам, к которым им доступ необходим.

    Нельзя чтобы они работали от рута или имени обычного пользователя, тк таким образом ты увеличиваешь площадь для атаки.

    А одном тг чатике сказали, что делают своего юзера, пусть будет app, через него запускают nginx и php-fpm и его же назначают владельцем и группой для файлов сайта (var/www/app), дают ssh авторизацию.

    Не вижу смысла выдавать app-юзеру права на логин по ssh. Все настройки можно делать и от имени административного пользователя - главное потом проверить что права выданы корректно.

    НО и надо помнить, что теперь нет нигде www-data и копипаст каких-то решений\конфингов может не завестись.

    Не вижу в этом никаких проблем - лишний раз включишь мозг чтобы понять, что ты там в конфигах воротишь => будешь сам знать где может быть потенциальная дыра или ошибка.

    у меня все работает, но, возможно, я не вижу какой-то ошибки, которая потом, в ci\cd, jenkinse, ansible или еще где-то мне ногу отстреллит.

    Значит потом для cicd / jenkins / ansible также заведёшь пользователя с нужными правами, как и у тебя, чтобы ворочать конфиги и файлы.
    Ответ написан
    2 комментария
  • Что выбрать для CI/CD .NET без докера?

    vabka
    @vabka Куратор тега .NET
    Токсичный шарпист
    Можно поднять свой gitlab ci.
    Но как он с виндой работает - хз.
    Ответ написан
    Комментировать
  • Что делать с автотестами GitHub?

    vabka
    @vabka
    Токсичный шарпист
    Смотри что за ошибки и разбирайся в причинах их возникновения.
    Может это локально у тебя они по ошибке прошли?
    гит выдал

    Ошибки гит выдавать не может.

    Может их как-то можно отрубить вообще к чертям?

    Если готов тестить на проде, тратить время на прогон тестов локально (и надеяться что коллеги делают то же самое), или тестить руками (или всё сразу) - конечно отрубай.

    PS: по манере задавания вопроса я подозреваю, что тебе вообще не нравится вся эта тема с автотестами, тебе не хочется разбирасться "в 3000 строк логов" для того чтобы отловить "фантомную" ошибку.
    Если ты уже сам решил, что тебе это не надо, то зачем задаёшь вопрос?
    Чтобы самоутвердиться за чужой счёт?
    Чтобы попытаться переубедить других, кто считает, что это ты неправ и нужно разобраться и починить ошибки?
    Ответ написан
  • Какие SCA и Code Quality анализаторы для своего проекта посоветуете?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    тест coverage

    Такой отчёт может CI/CD система выдавать, но для этого тестовый фреймворк должен ей эту информацию сообщий.
    Это не статический анализ.
    В случая голанга для этого используется go tool cover
    Если используется гитлаб, то вот инструкция по настройке:
    https://docs.gitlab.com/ee/ci/testing/test_coverag...
    code smells и code security issues

    Это точно умеет Sonarqube даже в бесплатной версии.
    Можно ещё в ci добавить какой-нибудь dependabot или его подобие, который будет смотреть за устаревшими библиотеками. + npm audit
    Ответ написан
    2 комментария
  • Как автоматизировать CI/CD без GitLab, GitHub и прочего?

    vabka
    @vabka
    Токсичный шарпист
    Подними Gitlab или Jenkins или Teamcity
    Ответ написан
    Комментировать
  • Docker и CI/CD: как все-таки происходит этот магический деплой?

    vabka
    @vabka
    Токсичный шарпист
    1. Во время ci собираешь docker image и закидываешь в docker registry (как правило приватный)
    2. Во время cd вызываешь API твоего оркестратора:
    docker-compose/docker swarm/k8s и тд, чтобы он обновил запущенные сервисы

    Оба этапа можно реализовать разными способами, хоть через гитлаб, хоть через кучу баш скриптов

    PS: docker-compose не является оркестратором и не умеет на ходу обновлять образы
    Ответ написан
    2 комментария
  • Что порекомендуете renovate или snyk?

    vabka
    @vabka
    Токсичный шарпист
    есть задача автоматически обновлять пакеты в node.js и react репозиториев, используя CI/CD.

    Имхо, обновление пакетов не должно быть автоматическим, и тем более не должно быть частью CI/CD, тк приложение тестируется на вполне конкретных версиях пакетов, и вообще package-lock не для того придуман, чтобы его какая-то автоматика затирала.

    Ещё более-менее ок вариант - подобие dependabot, который делает PR с обновлёнными пакетами, который можно принять, если все тесты прошли.

    Так что renovate выглядит вполне нормальным решением для своевременных обновлений.
    Snyk же - это какое-то решение полного цикла, чтобы ещё до принятия PR проверять зависимости и всё такое.
    Ответ написан
    4 комментария
  • Как написать правильные Unit/Integration тесты?

    vabka
    @vabka
    Токсичный шарпист
    > как правильнее
    Выбирай оптимальное соотношение, между простотой написания, скоростью выполнения, и покрытием.

    Самые крутые по покрытию - end to end тесты, в рамках которых вы поднимаете всю инфраструктуру и делаете http запросы к тестируемому сервису.
    Но они достаточно медленные, тиебуют сложеой инфраструктуры, да и при написании нужно думать, как сделать так, чтобы тесты друг на друга не влияли.

    А теперь про свой опыт:
    Имелся проект без тестов, но при этом было понятно, что его надо полностью рефакторить, и даже пару модулей с нуля переписать, ещё и переезд с одной субд на другую был. Но зато была документация на все ендпоинты.

    В таком случае идеально подошёл подход с написанием тестов на HTTP.
    Тогда я писал их на шарпе, но сейчас знаю, что в Postman можно не только запросы делать, но и писать тесты, которые потом запускать из консоли.

    А теперь про остальное:
    Все пишем по TDD, все тесты зеленые, а баги все равно появляются.

    Скорее всего, проблема архитектурная. Из-за большого количества моков у вас возникло много непротестированного кода.
    То что вы мокаете также должно быть полностью протестировано.

    один из наших сервисов, который использует базу данных, отпарвляет SQL запрос с синкаксической ошибкой

    Выносишь кусок кода, который генерирует этот SQL-запрос в новый сервис, и тестируешь, что он всегда даёт корректный синтаксис.

    Советую почитать про чистую архитектуру
    Ответ написан
    Комментировать