Comments 4
А какие у него преимущества по сравнению с github actions или gitlab-ci ?
С технической точки зрения, jenkins/gitlab-ci/github actions - это штуки разных поколений.
Самый старый jenkins. Для расширения функциональности надо ставить плагины, реюзабельность пайплайнов примерно никакая, защищённость билд-инфраструктуры от зловредных действий со стороны билд-процесса очень слабая, нет внятных способов доставки билд-инструментов на агенты (в статье вон руками npm ставят).
Дальше идёт gitlab ci. Тут уже вовсю code-driven подход, сломать гитлаб кривым билд-скриптом уже не выйдет, при запуске раннеров в докере инфраструктура в безопасности, а также докер в сочетании с container registry отвечает на вопрос "как доставить на билд-агенты нужный софт, причём одинаковый". Но всё ещё слабый реюз кусков пайплайна между проектами.
И, наконец, последнее поколение - github actions. Его киллер-фича - это собственно сами экшены, которые имеют чётко определённый формат общения и жизненный цикл, что позволяет по всему миру публиковать отдельные "кирпичи", из которых строится билд-процесс, в виде отдельных репозиториев: https://github.com/marketplace?type=actions
Ну а дальше ложки дёгтя: gitlab, в силу своей бизнес-модели, за часть фич (некоторые из которых могут оказаться критически необходимы конкретно для вашего проекта) хочет денежек. А github actions в self-hosted мало того что тоже небесплатен, так ещё и не содержит provisioning'а билд-агентов, оно доступно только в их облаке.
Итого, на мой взгляд, если вы готовы жить на сторонней инфраструктуре, то на сегодняшний день лучшее решение - это github actions. А если вам нужен self-hosted, то предпочтительнее gitlab ci.
В свое время когда надо было настроить развертывание кода, вместо Jenkins использовал более упрощенный инструмент Deliverybot, сразу интегрированный с GitHub Actions.
Свою задачу выполнял на все 100, ничего особенного тогда и не требовалось больше. Если кому-то подойдет, рекомендую. Осваивается очень просто:
app.deliverybot.dev
deliverybot.dev/docs
github.com/deliverybot
А зачем jenkins?
GitHub уже сам предоставляет средства ci
Непрерывная интеграция и развертывание (Deployment) с помощью Jenkins