В продолжение предыдущей статьи про инструменты деплоя в Kubernetes, хочу рассказать вам про то как можно использовать Jsonnet для упрощения описания джоб в вашем .gitlab-ci.yml
Дано
Есть монорепа, в которой:
- 10 Dockerfiles
- 30 описанных деплоев
- 3 окружения: devel, staging и production
Задача
Настроить пайплайн:
- Сборка Docker-образов должна производиться по добавлении git-тэга с версией.
- Каждая операция деплоя должна выполняться при пуше в ветку окружения и только по изменении файлов в конкретной директории
- В каждом окружении установлен свой gitlab-runner с отдельным тэгом, который выполняет деплой только в своём окружении.
- Не все приложения должны быть задеплоены в каждое из окружений, мы должны описать пайплайн так, чтобы иметь возможность делать исключения.
- Некоторые деплойменты используют git submodule и должны запускаться с установленной переменной
GIT_SUBMODULE_STRATEGY=normal
Как видите, описать это всё может показаться настоящим адом, но мы не отчаиваемся и вооружившись Jsonnet сделаем это легко и непринуждённо.
Читать полностью »