Автотесты и деплой на GitHub Actions: npm-скрипты, EditorConfig и настройка ssh-ключа

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 160

  • @pepelsbey
    @pepelsbey  4 года назад +4

    00:00 Интро
    01:43 Обзор проекта
    05:00 Сборка и деплой
    09:16 Создание репозитория
    10:50 Гитхаб-экшены
    11:59 Экшен для теста
    14:32 EditorConfig
    15:31 Запуск тестов
    16:56 Экшен для деплоя
    18:46 Добавление ключа
    21:51 Запуск деплоя
    23:35 Выводы
    24:55 Аутро

    • @evgeniymia9350
      @evgeniymia9350 2 года назад

      Мне постоянно выдаёт ошибку на стадии rsync. Вы не могли бы помочь, всё перекопал, но решения так и не нашёл

  • @КириллАнатольевич-ы8д

    в восторге от того что ты делаешь, крутой контент, потрясающая харизма, не покидай нас больше пожалуйста!!!

  • @ivanstrilets443
    @ivanstrilets443 4 года назад +28

    Подачи качественнее в ру сегменте не встречал) Палец вверх!

  • @blinkapec
    @blinkapec 4 года назад +12

    О боже, эта подача, это качество, этот контент! Просто и глазам, и ушам счастье :)
    Как всегда, Вадим берёт и не отпускает до "титров" :)
    Я даже на 1х смотрю, чтоб кайфануть подольше =)

  • @viktor_the_developer
    @viktor_the_developer 4 года назад +8

    Большое спасибо. Можно разобрать больше возможностей гитхаба)

  • @andyvi3116
    @andyvi3116 4 года назад +3

    Шикарная подача контента, самое главное, в такой простой манере в такой непростой области айти, как девопс. Спасибо Вадим за мастер класс )))

  • @oleksandrilkevych8268
    @oleksandrilkevych8268 4 года назад +4

    Всем фронтендерам в своих командах, чтобы перестали бояться сами работать с сервером и не ждали сложа руки помощи.

  • @IvanIsayev
    @IvanIsayev 4 года назад +1

    Крутейшие ролики в российском интернет-пространстве! Всё по делу, без воды, без соплей! Очень круто!

  • @tarasdashkevych
    @tarasdashkevych 4 года назад +3

    Вадим, ти крутий! Дуже все зрозуміло і грамотно говориш та показуєш. Дякую за всі твої відео!

  • @marthtml
    @marthtml 4 года назад +2

    такое бы понятое да еще с gitlab, вообще красота будет, везде гитлаб. Спасибо за контент!

  • @dudovichenko
    @dudovichenko 3 года назад +1

    Настроил у себя, все работает, красота! 🧐
    Вадим, ты лучший!

  • @ГеоргийЧупин-в1е
    @ГеоргийЧупин-в1е 3 года назад +1

    Спасибо! До этого не встречал столь адекватного видео по этой теме

  • @boldfish8191
    @boldfish8191 3 года назад

    самый внятный оратор который разжевывает валенкам типа меня... лайкос однозначный только по nginx-у не очень зашло так как у меня на VDS джанга вертится и не очень подошло

  • @Disorrder
    @Disorrder 4 года назад +1

    в гитлабе это было уже много лет назад :) Наконец-то после покупки гитхаба микрософтом что-то начало шевелиться

  • @e.chefranov
    @e.chefranov 4 года назад +3

    Офигенная тема! Спасибо большое)

  • @АлександрБугримов-о1е

    Вообще отличное видео. Спасибо!

  • @anonlog
    @anonlog 3 года назад +1

    Восторг!!! Огромное спасибо, за такой годный контент. Все заработало и на моем репозитории. Я просто счастлив!)))

  • @dobermanpharaoh7567
    @dobermanpharaoh7567 Год назад

    Отлично все обьяснил и рассказал, спасибо очень круто, попробую в своём пет проекте

  • @panterr2991
    @panterr2991 4 года назад +2

    Жирный лайк за очень полезный видос!

  • @dear_lucas
    @dear_lucas 2 года назад

    Спасибо, Вадим, за отличный туториал! Собрал по нему авто-деплой Django-проекта. Единственное, чего тут не хватает, так это добавить в команду про rsync: --filter=":- .gitignore". А то он сразу же поудалял у меня всю статику и медиа-файлы...

  • @eq656
    @eq656 4 года назад +1

    Это невероятно полезная информация

  • @capstanfearless
    @capstanfearless 4 года назад +1

    Вадим, всё просто и офигенно, спасибо большое, буду пользоваться этими штуками!

  • @АлексейКазаков-р7й
    @АлексейКазаков-р7й 4 года назад +1

    Господи, полгода было интересно ci/cd заняться, но было стремновато. А тут такая годнота подъехала, часок и готово, СПАСИБО!)

  • @777Vasya77
    @777Vasya77 4 года назад +1

    Спасибо за классный контент! 😍

  • @GoshaakaScooby
    @GoshaakaScooby 4 года назад +1

    Огромное тебе спасибо!!! То, что ты делаешь это бесценно.

  • @lesyakogivchak8899
    @lesyakogivchak8899 4 года назад +1

    Очень круто! Спасибо большое! Сразу же пошла пробовать и тестировать. Получилось автоматизировать на своих проектах - тесты, билд и деплой на firebase hosting :) Для меня, как для фронтенда - это невероятная магия :)

  • @andreysokolov2335
    @andreysokolov2335 4 года назад +1

    Отличное видео. Очень полезно. Большое спасибо )

  • @FozGenKo
    @FozGenKo Год назад

    npm ci берет зависимости из package-lock.json, а при npm i просто устанавливает из package.json, при этом может обновиться файл package-lock.json

  • @Игорь-н1р1ъ
    @Игорь-н1р1ъ 3 года назад

    Отлично все рассказал, что для чего и без "воды"! Лайк и подписка)

  • @TheJustmeagain
    @TheJustmeagain 10 месяцев назад

    Стоит добавить, что npm ci на пайплайне будет работать только в том случае, если репозиторий содержит package-lock.json. В противном случае будет сваливаться в EUSAGE ошибку.

  • @yslpn
    @yslpn 4 года назад +1

    Очень полезно, спасибо!

  • @КостянЕрмаков-е9ю
    @КостянЕрмаков-е9ю 4 года назад +2

    Хммм, надо пересмотреть видео и попробовать что-то такое сообразить, ну или сломать как обычно. 😂
    Спасибо Вадим.

  • @АлександрСмирнов-ы9ж
    @АлександрСмирнов-ы9ж 4 года назад +1

    Спасибо за видео, максимально полезная информация для разворачивания кода без старых выгрузок по FTP. Кстати, важно убедиться чтобы на VPS сервере rsync также был установлен.

  • @evilme
    @evilme 4 года назад

    Вадим, спасибо за ваш труд.

  • @SalomDunyoIT
    @SalomDunyoIT 3 года назад

    прям то что надо было! круто.

  • @user-xu9tb7oe2z
    @user-xu9tb7oe2z 2 года назад

    спасибо большое! помогло

  • @artemijeka
    @artemijeka 2 года назад

    Интересно!

  • @ВадимБогданов-й1ч
    @ВадимБогданов-й1ч 4 года назад

    Как раз на очередь в изучении стал вопрос о деплое, и ты тут как тут)
    Спасибо 🙃

    • @pepelsbey
      @pepelsbey  4 года назад

      Подписывайтесь, будет больше )

    • @ВадимБогданов-й1ч
      @ВадимБогданов-й1ч 4 года назад

      @@pepelsbey сколько минимально на патреоне?)

    • @pepelsbey
      @pepelsbey  4 года назад

      Я сейчас про подписку на канал говорил :) А на Патреоне кажется минимально 1 $

    • @ВадимБогданов-й1ч
      @ВадимБогданов-й1ч 4 года назад

      @@pepelsbey на канал то я подписан), а на патреоне видел 99$, и пока это сочно для меня в месяц)

    • @pepelsbey
      @pepelsbey  4 года назад

      Не, 99 $ - это сколько всего собирают люди :)

  • @kotelnikov-blog
    @kotelnikov-blog 4 года назад +3

    19:44 Теперь в буфере обмена лежит ПРИВАТНЫЙ ключ ;)

    • @pepelsbey
      @pepelsbey  4 года назад

      Да, оговорился. Но, к счастью, скопировал всё-таки нужный :) Не верьте ушам, верьте глазам!

  • @jorgenUA
    @jorgenUA 4 года назад

    тема интересная и ведущий занятный, футболка что надо, каждый раз с новыми надписями ))

    • @pepelsbey
      @pepelsbey  4 года назад

      Стараюсь разнообразить картинку :) Но футболки уже начали повторяться, к сожалению

  • @ІванБоровик-э8л
    @ІванБоровик-э8л 3 года назад

    Спасибо!

  • @dihaneeer
    @dihaneeer 3 года назад

    Офигеть! Это похоже на магию 😅

  • @kost9kost
    @kost9kost 4 года назад

    Спасибо отличное видео

  • @eqntdhjn
    @eqntdhjn 4 года назад

    Ничего не понял, но очень круто!

  • @user-QesOrwuMqN
    @user-QesOrwuMqN 4 года назад +8

    Лучше создать отдельный ключ для деплоя, ты же можешь на разные сервера под своим ключом ходить, а значит в случае компроментации ключа придется везде его перепрописывать

    • @pepelsbey
      @pepelsbey  4 года назад +3

      Вы правы: на тех же «Веб-стандартах» заведён отдельный пользователь для деплоя и используются его ключи. Но тут проще было показать свой.

  • @Jay-pp4pk
    @Jay-pp4pk 4 года назад +1

    Я столько времени потратил на освоение этого всего и так гордился этими навыками, а начинающим разработчикам теперь все достанется за 5 минут, потраченных на видео. Обидно однако(
    Шучу, конечно же:)
    Спасибо за видос!
    С удовольствием посмотрел и сверил со своими знаниями.

    • @pepelsbey
      @pepelsbey  4 года назад +4

      По видео может сложиться впечатление, что я всю жизнь это знал. Но я, как и вы, столько времени потратил весной, чтобы разобраться. А теперь вот рассказываю всего за пять минут!

    • @Jay-pp4pk
      @Jay-pp4pk 4 года назад

      @@pepelsbey очень информативно получилось 👍

  • @DoNotMerge
    @DoNotMerge 4 года назад

    npm ci использоует для установки package-lock.json. это нужно чтобы сервер использовал контролируемые зависимости, а не собирал из последних версий

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Фактически да, но главное тут, как я сказал, что ставится быстрее :)

  • @StupidLova
    @StupidLova 4 года назад

    Отличный материал! Жаль нераскрытой осталась тема как деплоить только в случае, когда экшен тестирования был успешно завершен.
    В доке тоже не нашел описания как описать зависимость между workflows. Надеюсь добавят в будущем.

  • @bpleshka
    @bpleshka 4 года назад

    GitHub Actions - это лучшее что случилось в мире CI/CD за последнее время. Сыро еще, но очень много возможностей появилось. Можно еще прокачать доставку делая репорты с помощью Deployments API. Это позволит получать сообщения о доставке в Пулл Реквестах, ну или в целом получить новую вкладку с доставками в репозитории.
    Мы тут Action наопенсорсили для этого github.com/marketplace/actions/deploy-status

    • @alexandrvienik1575
      @alexandrvienik1575 4 года назад

      Как по мне, то гитлабовский CI/CD тоже довольно удобно сделан

  • @tolych
    @tolych 3 года назад

    Жаль не было этого видео 4 года назад, когда все это дело настраивал по документации

  • @dimkadenisov
    @dimkadenisov 4 года назад

    Вадим, спасибо за видео. У Вас отлично поставлена речь. Излагаете кратко и ясно.
    Подскажите, пожалуйста как сделать вывод возможных продолжений команд в терминале как это происходит на 19:15?

    • @pepelsbey
      @pepelsbey  4 года назад +2

      Этот вывод кажется встроен в bash и вызывается нажатием Tab на неполном имени.

  • @osidpgipsoe
    @osidpgipsoe 4 года назад +1

    npm ci игнорирует package.json пакета и устанавливает модули руководствуясь локфайлом (package-lock.json). Это позволяет создавать воспроизводимые сборки: вы получаете именно то, что ожидаете при каждой установке.

  • @Какой-тоПарень-ш2ю
    @Какой-тоПарень-ш2ю 3 года назад

    Вот бы про ci/CD для докера послушать

    • @pepelsbey
      @pepelsbey  3 года назад

      Это вряд ли, я не настоящий девопс

  • @gggmvp4689
    @gggmvp4689 4 года назад

    Вадим, когда запишите полноценный практический курс по вёрстке?)

    • @pepelsbey
      @pepelsbey  4 года назад

      Пожалуй, никогда :) Это очень большая работа, которую я уже так или иначе делаю в HTML Academy и этой мой фултайм.

  • @denysdeckard7607
    @denysdeckard7607 4 года назад

    Как кстати!

  • @vic_shine
    @vic_shine 4 года назад

    То чувство, когда «посмотрел» видео еще до того, как его смонтировали... благодаря оповещениям в ленте GitHub, о том, что некий юзер pepelsbey начал пушить в репозиторий pepelsbey.dev коммиты со странными названиями (типа «ломает лого»)... 😅 Зашел в Actions репозитория, посмотрел исходники и ага, вот про что будет видео.
    В целом, отличный выпуск! Как всегда - огромное СПАСИБО, Вадим 👍
    Ну что, следующая остановка Docker? Или может быть даже Ansible? И можно будет смело закрывать тему «деплой для самых маленьких» - всё остальное уже бантики и вкусовщина... 😉

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Я, пожалуй, буду теперь делать такие вещи в приватных репозиториях, чтобы не привлекать лишнего внимания. Деплоя сложнее, чем было в этом видео, не будет - я рассказал то, в чём уверен, дальше - просто не моя область.

    • @vic_shine
      @vic_shine 4 года назад

      @@pepelsbey вот за что люблю и уважаю тебя, Вадим, так за то, что на канале (и в других соцсетях) не бывает «мусорного» контента на темы, в которых ты не разобрался и/или не уверенно себя ощущаешь! Спасибо огромное, еще раз, ты делаешь контентную часть Рунета (да, и нас всех, что уж тут) чуточку лучше 🥰

  • @fisherny3959
    @fisherny3959 4 года назад +1

    Спасибо огромное, очень полезное видео лично для меня, так как из этого я почти ничего не знал ). Я так понял, что с помощью action можно запретить пушить в мастер и в публичном репозитории и делать только через pull_request, верно?

    • @pepelsbey
      @pepelsbey  4 года назад

      Это можно сделать в настройках репозитория - запретить пушить в мастер.

    • @fisherny3959
      @fisherny3959 4 года назад

      @@pepelsbeyСпасибо за ответ. Все оказалось гараздо проще ) Я еще совсем зеленый в данной теме )

  • @yagelProject
    @yagelProject 3 года назад

    Vercel полностью убирает прослойку между ubuntu и настроек Github. Если это не бекенд конечно ;) а только фронтэнд как в примере.

  • @Artem-pe3sb
    @Artem-pe3sb 3 года назад

    Здравствуйте. Шикарный контент, большое спасибо! А сборка и деплой в GCP будет принципиально отличаться от описанного в видео? Мне, в частности, требуется собрать java-проект и командами gcloud сначала закинуть исполняемый файл в Гугл, затем рестартануть группу виртуалок в GCP.

    • @pepelsbey
      @pepelsbey  3 года назад +1

      Не работал с GCP, так что не помогу вам здесь

  • @PlaceTickets
    @PlaceTickets 3 года назад

    Подскажите пожалуйста, как сконфигурировать репозиторий, чтобы пи создании Release в архив попадали не все файлы репозитория, а чтобы можно было исключить парочку файлов репы и в архив попадали только остальные?
    Спасибо.

    • @pepelsbey
      @pepelsbey  3 года назад

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

  • @0xFD1C41FA
    @0xFD1C41FA 4 года назад

    Видео хорошее и полезное, но есть один нюанс: если тест падает - деплой пройдет.
    Я решил эту проблему тем, что объединил джобы в один файл и описал зависимость деплоя от успеха тестов через ключ needs, но это имеет другую проблему - тогда приходится убрать вотчинг пулл реквестов ибо деплой на пулл реквест - не нужно, тут или как-то условие сделать на тип события, или делать отдельную джобу конкретно на пулл реквест.
    Хотелось бы чтобы Вы это прояснили, мой английский не позволяет мне свободно читать документацию по ГитХаб екшенам :(

    • @pepelsbey
      @pepelsbey  4 года назад +2

      Для меня это никогда не было проблемой: коммиты попадают в мастер из пулреквеста, где запускается тест и он не мёржится, пока не начнут проходить тесты. Это самое правильное решение, на мой взгляд. Мне пока не доводилось собирать более сложные цепочки из экшенов, для моих задач хватало простых. Но если доберусь, обязательно расскажу об этом.

  • @dreadwood
    @dreadwood 4 года назад

    Интересное видео. На ~19:45 возникает путаница: какой ключ в буфер попал - публичный/приватный.

    • @pepelsbey
      @pepelsbey  4 года назад

      Да, оговорочка вышла. К счастью, скопировал правильно :)

  • @googleplexer
    @googleplexer 4 года назад +1

    Гитхаб экшны рулят! :) Долой всякие сервисы ci! Даешь комбайн на github! :) Я тоже тащуся от Экшенов на ГитХабе 😂😎👌🥳

  • @tiffany-user
    @tiffany-user 2 года назад

    Привет. Спасибо за множество полезной информации. Есть вопрос по медиафайлам. Если деплоиться таким образом, то все картинки и видео находящиеся в папке проекта, точно также перезаписываются, как и сам код. Если размер медиа 20мб и больше, то это большие затраты времени. Как лучше всего хранить медиафайлы?

    • @pepelsbey
      @pepelsbey  2 года назад +1

      Если в репозитории хранится контент, то лучше такого избегать и делать более сложный деплой. Например, хранить тяжёлое на CDN.

  • @zencod_ru
    @zencod_ru 4 года назад

    Спасибо за видео! Такой вопрос, а нельзя в deploy.yml писать команду npm run deploy -e ... и дальше уже путь к ключу? Чтобы если что не править в двух местах

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Вообще в npm-скрипты можно прокинуть параметры во время запуска через npm run с помощью -- (двух дефисов), так что попробуйте. Вопрос в том, получит ли такие параметры rsync, но кажется, что шанс есть.

  • @ИванИванов-м3у4ы
    @ИванИванов-м3у4ы 4 года назад

    Вадим, хоть это не совсем ваш профиль - DevOps, но ради сравнения, запишите пожалуйста про Jenkins.

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Вы правы, это совсем не мой профиль. Так что вряд ли :)

    • @bargamut
      @bargamut 4 года назад

      По Jenkins есть неплохие уроки от Кирилла Семаева.
      В общем и целом, там примерно всё так же, как и с Github Actions. Только pipeline приходится писать на языке Groovy, а не YAML, что не очень хорошо сказывается на читабельности, но не критично. Впрочем, есть плагин, Jenkins YAML Pipeline, что решает эту загвоздку. Во всяком случае, на моей практике проблем не возникало, а если и есть, можно пойти на Github к автору плагина, посотрудничать. )

  • @dyaroman1241
    @dyaroman1241 4 года назад

    Спасибо за познавательное видео!
    Вот только тема с тестами не совсем раскрыта, если экшен тестов прошёл не успешно, деплой все равно пройдёт?

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Я показал саму механику организации такой сборки на Гитхабе. Как её комбинировать и усложнять - это другой вопрос. Лучше конечно идти через пулреквесты, в которых непрошедший тест будет блокировать мёрж и показывать, что такому коду не дело в мастере. Но можно и объединить деплой с тестом в одном экшене, чтобы тесты падали и деплой не проходил. Это уже другой уровень сложности, я туда пока решил не ходить.

    • @ermakamre
      @ermakamre 4 года назад

      @@pepelsbey бывает и такое, что тесты в pull request проходят, а вот после merge в master (если это не fast-forward merge), уже что-то ломается. Так что лучше всегда тестировать именно ту версию, что будет deployed.

  • @jorgenUA
    @jorgenUA 4 года назад

    И как это мы должны всё бросить и узнавать про эдитор.конфиг, если ты нам про него не рассказывал?! Вадим!))

    • @pepelsbey
      @pepelsbey  4 года назад

      Теперь у вас нет оправданий!

  • @АлексейБугаев-з9ь
    @АлексейБугаев-з9ь 4 года назад

    Вадим спасибо за потрясающую идею, только застопорился на том что npm run build в экшене скрипт вылоняется полностью без ошибок, а результа ноль(ничего не собрано), экшен на всех пунктах ставит зеленую галочку. Есть ли предположения?

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Если вы хотите, чтобы результат сборки оказался в репозитории, вам это нужно сделать самим. Сборка запускается на свежем экземпляре сервера, а потом гасится и пропадает, если вы ничего не сделаете с результатом.

    • @АлексейБугаев-з9ь
      @АлексейБугаев-з9ь 4 года назад

      @@pepelsbey Теперь все стало ясно. Спасибо!

  • @ВасилийКлеткин
    @ВасилийКлеткин Год назад

    Расскажи, как деплоить через docker-compose

    • @pepelsbey
      @pepelsbey  Год назад

      Я не очень разбираюсь в Docker, но знаю где почитать. Может вам поможет:
      web-standards.ru/articles/docker-unboxing-1/
      doka.guide/tools/docker-compose/

  • @andryi6175
    @andryi6175 4 года назад

    Класно все) но жизнь сурова когда работаешь в команде где не используют git)) а про докер есть что ?)

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Соболезную. И почитайте документацию, там есть подробности про образы, докер и прочее.

  • @pnlabs
    @pnlabs 4 года назад

    Интересно, а я через вебхуки деплою, не пойму чем лучше экшены... Только тем, что собираются на самом гитхабе? У меня по вебхуку сам сервер вытягивает свежий master и тесты и билды просто запускаются на продакшн-сервере (на уже установленном node и npm) и не надо никаких ключей

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Лучше тем, что прозрачнее и хранятся вместе с кодом. То есть у вас и npm-скрипты, и экшены живут вместе и понятно что и как происходит. Плюс интерфейс запуска отлично показывает, что пошло не так. Ну и не только деплой ведь - автотесты кода, вы про это не забывайте :)

    • @pnlabs
      @pnlabs 4 года назад

      @@pepelsbey но тесты я всё равно на продакшне запускаю и у вас ключ с кодом не хранится и всё равно надо настраивать, но я вас понял, да, тоже как вариант, удобно.

  • @KickFuel
    @KickFuel 4 года назад +3

    В ухе дебиан)

    • @pepelsbey
      @pepelsbey  4 года назад +1

      А на сервере Убунта, непорядок

  • @blinkapec
    @blinkapec 4 года назад

    А всё это можно провернуть с приватным репозиторием на бесплатном github аккаунте?
    И есть ли ограничения у action-ов? На bitbucket подобное пробовал - было ограничение на сколько-то минут на выполнение тасков в месяц, если не ошибаюсь.

    • @pepelsbey
      @pepelsbey  4 года назад +1

      В бесплатных аккаунтах теперь можно делать приватные репозитории и там всё так же хорошо работает.

    • @0xFD1C41FA
      @0xFD1C41FA 4 года назад +1

      В дополнение - в гитхабе тоже есть ограничения, в зависимости от вашего тарифа.
      Более точно можете узнать в секции pricing на гитхабе.
      Точно не могу сказать, там что-то вроде 1500 минут в месяц на бесплатном аккаунте.

    • @blinkapec
      @blinkapec 4 года назад

      @@0xFD1C41FA Опа, спасибо за уточнение!

  • @MikeIsTalking
    @MikeIsTalking Год назад

    Вадим, привет! А скажи пожалуйста, а как ты решаешь проблему инвалидации кешей? Я задеплоил сайт, по аналогии с тем, как ты делаешь в этом видео (см. твой package.json), и каждый раз, когда я что-то меняю в стилях, после редеплоя, браузер всё ещё отдаёт старую версию статики. Я, конечно, закостылил сейчас это в виде версии,

    • @pepelsbey
      @pepelsbey  Год назад +1

      Я раньше возился с кэшбастингом: переименовывал файлы в хэш-сумму, делал автозамену - для всего есть плагины для сборщиков: Gulp, Webpack, Rollup, Vite. Но в какой-то момент попробовал сделать проще и не заметил разницы. Кажется, что дело в правильной настройке сервера, чтобы отдавались правильные заголовки.

    • @MikeIsTalking
      @MikeIsTalking Год назад

      Спасибо большое! Если у меня просто статичный сайт на nginx, то просто в настройках nginx это делается?@@pepelsbey

    • @pepelsbey
      @pepelsbey  Год назад +1

      Да, нужно поискать руководство как в конфиге nginx выставить правильные заголовки

    • @MikeIsTalking
      @MikeIsTalking Год назад

      Отлично! Спасибо, я сделал. Это очень просто:
      server {
      ...
      etag on;
      if_modified_since before;
      ...
      }@@pepelsbey

  • @b-o-t-l-y
    @b-o-t-l-y 4 года назад

    Ура, я уже достал попкорн!!!!!!!!!!!!! Приятного мне просмотра. ))))))

  • @r2r4ik
    @r2r4ik 4 года назад

    Можно спросить Ваше мнение по поводу gitLab?

    • @pepelsbey
      @pepelsbey  4 года назад

      Не было повода там поработать, но многим очень нравится их система как раз за богатые возможности CI/CD.

    • @r2r4ik
      @r2r4ik 4 года назад

      @@pepelsbey Спасибо!!! И респект за ответ!

    • @bargamut
      @bargamut 4 года назад

      Ввёл на предыдущем месте работы хранение проектов на GitLab Standalone CE.
      Встроенный CD/CD конкретно помог относительно быстро внедрить практики DevOps и ускорить процесс разработки и доставки собранных пакетов (деплой ручной по отмашке) + настроил простые пинки Телеграм-бота для уведомлений о статусе и готовности этих сборок.
      Но временами приходилось много курить документацию, т.к. какие-то вещи приходилось делать не совсем прямым путём. Как минимум, из-за использования бесплатной версии, при наличии нужных возможностей в платном Enterprise. Как максимум, из-за технических ограничений в разработке GitLab.

  • @olduniverse9270
    @olduniverse9270 4 года назад

    Сори может туплю. Но зачем сохранять ссш в файл с окружения, а потом из файла в rsync? Нельзя сразу с окружения передать?

    • @pepelsbey
      @pepelsbey  4 года назад

      Я несколько раз перечитал вопрос и всё равно не понял. Разверните, если не сложно :)

    • @olduniverse9270
      @olduniverse9270 4 года назад

      @@pepelsbey 18:45 нельзя на 28 строке вместо "ssh -i $HOMe/.ssh/key -o ...." написать "ssh ${{secret.ssh}}" как на 22 строке? примерно так.

    • @pepelsbey
      @pepelsbey  4 года назад

      Вы, пожалуй, правы. Я соединял рецепты вместе и не додумался до оптимизации.

    • @olduniverse9270
      @olduniverse9270 4 года назад

      @@pepelsbey видео очень хорошее. Буду себе делать actions и попробую.

  • @БогданЮрчук-т8о
    @БогданЮрчук-т8о 4 года назад +1

    есть ли возможность отклонить деплой если тесты не прошли?

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Да, этот способ называется «пулреквест» :) Вы можете усложнить и склеить тестирование и деплой в один экшен, но лично я иду через пулреквесты, так прозрачнее и надёжнее.

    • @БогданЮрчук-т8о
      @БогданЮрчук-т8о 4 года назад

      @@pepelsbey ахах :) ето слишком просто. Спасибо за ответ

  • @dimalepel
    @dimalepel 4 года назад

    Добрый день. Решил поиграться с исходниками проекта и при выполнении команды "npm start" вместо проекта получаю "Error. Cannot GET /". В чем может быть ошибка? Заранее благодарен. P. S. Использую исходники из ролика.

    • @pepelsbey
      @pepelsbey  4 года назад

      Сложно сказать, что это может быть без подробностей. Я захожу в папку репозитория playground/28, делаю npm install, npm start и у меня всё работает :(

    • @nataliasemenova548
      @nataliasemenova548 4 года назад +2

      Такая же проблема. Если у вас windows, удалите одинарные кавычки вокруг имен директорий.
      "start": "browser-sync start --server src --no-notify --no-ui --cwd src --files index.html,styles/**/*",

    • @pepelsbey
      @pepelsbey  4 года назад

      Спасибо! Убрал кавычки в скрипте, запушил в репозиторий.

    • @dimalepel
      @dimalepel 4 года назад

      @@nataliasemenova548 Спасибо. Все заработало. Но у меня еще вопрос: какими плагинами для npm лучше пользоваться для добавления в данную сборку возможностей работы со скриптами и изображениями (шрифтами). Заранее благодарен.

  • @Kirill-kh3kt
    @Kirill-kh3kt 4 года назад

    Мне кажется, пора использовать yarn :)

  • @vitaliynosov6189
    @vitaliynosov6189 4 года назад

    При запуске сборка выдает Cannot GET / В чем может быть проблема?

    • @pepelsbey
      @pepelsbey  4 года назад

      К сожалению, сложно сказать. Можно много чего сделать не так: не поставить зависимости, запустить не там и не то )

    • @vitaliynosov6189
      @vitaliynosov6189 4 года назад

      @@pepelsbey Да все правильно установлено и запущено. Ошибка в консоли : Refused to execute inline script because it violates the following Content Security Policy directive: "default-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-ThhI8UaSFEbbl6cISiZpnJ4Z44uNSq2tPKgyRTD3LyU='), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

    • @pepelsbey
      @pepelsbey  4 года назад +1

      Опять же, до конца не уверен, но предположу: у вас где-то указан заголовок CSP (Content-Security-Policy), который запрещает встраивание скриптов на страницу. А для работы Browsersync такое встраивание нужно. Вероятно, вам стоит отключить такие заголовки при локальной разработке и отправлять их только в продакшене developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

    • @vitaliynosov6189
      @vitaliynosov6189 4 года назад

      @@pepelsbey Cпасибо

  • @anstapol
    @anstapol 4 года назад

    19:40 не понятно, копируете приватный ключ но говорите "в буфере лежит мой публичный ключ". И зачем называть файл `.ssh/key` если можно использовать стандартное имя тем самым избегая флаг `-i`

    • @pepelsbey
      @pepelsbey  4 года назад

      1) оговорка и 2) вариация - кажется ничего страшного, да ведь?

  • @nickswarden5893
    @nickswarden5893 Год назад

    GitHub Actions, SSH в пайплайне, сильно. Не надо такому учить, потом приходят и делают такую грязь. Прежде чем снимать обучающие видео - разберитесь в теме.
    Простые шаги: Сборка, тестирование, запаковка кода( артефакт ), доставка и это база.

    • @pepelsbey
      @pepelsbey  Год назад +1

      Всё классно, но забыли аргументацию почему так нельзя делать. Вот моя: это прекрасно работает для моих задач. Не работает для ваших? Поделитесь опытом, а не запрещайте мне делиться моим.

  • @googars
    @googars 4 года назад +1

    Очень полезно 👍 Большое спасибо!

  • @darwim
    @darwim 4 года назад +1

    Очень доходчиво, спасибо

  • @АлександрКостюченко-у4х

    Спасибо!

  • @Ercheg123
    @Ercheg123 3 года назад

    Отличный контент. Спасибо.

  • @BearVodkaAndValenki
    @BearVodkaAndValenki 3 года назад

    Спасибо!

  • @kaze9308
    @kaze9308 3 года назад

    Спасибо!