amarao: (Default)
amarao ([personal profile] amarao) wrote2021-07-05 08:56 pm

CI без сервера

А вот у меня есть такой запрос: я хочу иметь CI-подобный инструмент (задачи/автоматически вычисляемые зависимости порядка выполнения, параметры, matrix и т.д.), но без сервера. Чтобы не было веб-морды и сервера, а было что-то вида

`ci-run ci.yaml` (в чём эта штука выполняется - следующий вопрос). И чтобы из ci.yaml автоматически вытекало всё остальное. Логи на экран, что выполнять, статусы, зависимости, cleanup и т.д.

Разумеется, opensource. Что-то мне в голову ничего не приходит.
yurikhan: (Default)

[personal profile] yurikhan 2021-07-05 07:45 pm (UTC)(link)

Автоматически вычисляемые зависимости порядка выполнения без сервера называются make.

yurikhan: (Default)

[personal profile] yurikhan 2021-07-06 06:49 am (UTC)(link)

Если у меня этап testing зависит от этапа create_vms, а этап deploy от этапа testing, то как я это в make'е опишу так, чтобы при повторном прогоне он бы знал какие этапы делать?

Ну, впихиваем имеющийся workflow в парадигму зависимости файлов. Если у этапа нет естественного артефакта — создаём искусственный.

create_vms.stamp: $(vm_deps)
»   create_vms
»   touch $@
testing.stamp: create_vms.stamp $(test_deps)
»   run_tests
»   touch $@
deploy.stamp: testing.stamp $(deploy_deps)
»   deploy
»   touch $@

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

Edited 2021-07-06 06:55 (UTC)