Делаю проект на NodeJS (бек+фронт), настал момент, когда нужно настроить автоматический сбор билдов.
Я до этого не работал с CI/CD, видел только Jenkins на прошлой работе.
У меня есть несколько "требований/желаний", и из-за этого мне сложно выбрать систему. Банально потому что такие вещи сразу не пишут в документации, а брать что-то одно, разбираться пару дней и понять, что не подходит - странно.
* Локальный сервер, обязательно
* Т.к. у меня все написано на node js, то было бы круто иметь возможность скрипты писать тоже на js. Я так понимаю,
можно просто вызывать командные файлы (работаю на Windows) и запускать скрипты из ноды, тогда это не проблема
* Нужно чтобы определенные билды собирались по определенным триггерам, типа ключевых слов в коммите мастер-бранча. Например, если в коммите есть [project1] v1.2.0 то запускается билд project1, а если [project2] v1.3.0 то, естественно, project2.
* Нужно чтобы можно было сформировать сообщение из сообщений коммитов, до предыдущей версии.
Т.е. например, я пишу в коммите [project1] v1.0.1 - нужно собрать текст из всех коммитов, до версии 1.0.0, которые помечены текстом[project1]. Вполне возможно, что это какойто велосипед и нормальные люди делают по-другому - буду рад совету!
Пример бранча с коммитами:
[project1] v1.0.1
[project1] fix: пофиксил кое что
[project2] new: сделал тото
[project1] new: сделал другое
[project1] v1.0.0
В итоге я должен получить сообщение только относящиеся к project1
v1.0.1
fix: пофиксил кое что
new: сделал другое
* После билда сообщение с коммитами нужно отправить в телеграмм бота (опять же, я сам напишу скрипт в который надо это сообщение как-то передать)
1) Локальный сервер и CI/CD никак не связаны.
2) Вы можете написать свой CI/CD на js. Либо использовать любое популярное решение и из него запускать скрипты js, не встречал чтобы так делали, но почему бы и нет.
3) Разные проекты хранят в разных репозиториях, это основные принципы пользования системами контроля версий.
4) Обычно в готовых решениях есть автоматически формируемые списки изменений, по-сути список коммитов отличающих текущий билд от предыдущего. Но "до версии 1.0.0" это что-то странное, если только сами это сделаете.
Большой разницы между готовыми решениями нет, хитрые хотелки всегда можно реализовать самому. Есть, конечно, нюансы, к примеру GitLab для сложных вещей платный, но вряд ли они вам понадобятся.
Советовать что-либо сложно, т.к. на мой взгляд система странная. Обычно разные проекты располагаются в разных репозиториях, так удобнее. Версии вешают тегами и собирают билды зачастую именно по тегам, хотя бывает и по веткам тоже.
Ориентируясь на фразу "Делаю проект на NodeJS (бек+фронт), настал момент, когда нужно настроить автоматический сбор билдов" хочется спросить, а зачем вам вообще CI/CD, нужно автоматизировать сборку - автоматизируйте, зачем нужен CI/CD?
1) Я имелл ввиду что вся сборка и администрирование должны происходить на моем сервере
2) Чтобы не писать свой велосипед. вот я здесь и спрашиваю)
3) Да, согласен. У меня бывают дев-билды и прод-билды. А чтобы выделить общий код в отдельную либу с отдельным репозиторием - да, такого не сделано, по причине кажущихся мне на текущий момент больших трудозатрат
4) "Но "до версии 1.0.0" это что-то странное, если только сами это сделаете." -- так это и есть до предыдущей
" нужно автоматизировать сборку - автоматизируйте, зачем нужен CI/CD" -- Я думал, что сборка это часть CI, я ошибаюсь?
Иван Ларцов,
1) на каком сервере собирать принципиальной разницы нет обычно.
2) процессы сборки очень сильно отличаются, поэтому всегда что-то нужно писать самому под свою архитектуру, под свой проект. Будет ли это bash, ant или javascript разницы особой нет, просто сборщик будет запускать скрипт на этом языке, сборщик в свою очередь предоставит этому скрипту необходимые данные (например тип сборки или название тега) через переменные окружения.
3) Билды для dev и prod обычно различаются, безусловно. Но код ведь для них один и тот же. Поэтому берем из репозитория код и настраиваем его в зависимости от того dev, test или prod.
4) Сравнение с предыдущей сборкой есть обычно (в Jenkins точно), но обычно сбор фич которые пошли в релиз идет по таск-менеджеру, а не сборщику.
Верно, сборка это часть и CI, и CD, но сборка это не CI/CD. Поэтому и уточняю, что вы имеете ввиду, т.к. я так понял что CI вы вообще не используете, в какой степени используете CD не очень понятно. И нужен ли он вам, у вас страдает процесс из-за траты времени на стадии подготовки или деплоя релиза?
Сейчас мне просто нужно настроить сборку билдов (дев, прод) по триггерам (названия в коммитах). Так что да, от CI/CD мне конкретно сейчас нужна только сборка.