300 и встала задача, как причесать весь зоопарк gitlab-ci который есть.
Сейчас в каждый проект копируется шаблон и правится под свои нужды.
Но может есть какой то более прогрессивный способ, чтобы был единый CI для всех типовых проектов, который бы автоматически подтягивался гитом?
В общем, я не знаю какие есть сейчас решения, может кто подскажет у кого тоже много проектов, как вы организовали написание cicd.
репа с ci которая будет инклюлится
Сделал отдельную репу и описал в нем базовые правила триггеров и переменных В новый проектах просто подключается через include
Не знаю насколько правильно, но мы таки попытались сделать общие шаблоны под самые частые случаи(через отдельную репу), а уже в конкретных проектах значения просто поставляются(например название папки для s3 кеша и тп). Вызываем через include + extends для перезаписи базовых значений. Если очень надо, то и джобу саму можно полностью переписать под свои нужды(если стандартный шаблон не подходит)
оу, спасибо. Интересно, а есть ли на просторах сети где нибудь готовые примеры, чтобы посмотреть?
Пока чет не понял как инклудить отдельную репу. Подскажи плз https://docs.gitlab.com/ee/ci/yaml/includes.html
Да в доке все понятно относительно. Главное понимать как правильно организовать под свои нужды. Хотя местами такую унификацию может стать сложнее поддерживать
сложно это когда в сотни проектом мержи надо собирать чтобы деплой подправить. ну сам код то конечно посложнее будет. но допустимо
например есть репа с шаблонами под основные нужды - infrastructure/gitlab-ci-templates Тогда в нужном проекте нам вызываем этот шаблон. .gitlab-ci.yml include: project: infrastructure/gitlab-ci-templates file: - kaniko-executor-build.yml stages: - build kaniko-executor-build: stage: build variables: CACHE_DIR: /root/.cache PROJECT_CACHE_DIR: ${CI_PROJECT_DIR}/.cache extends: - .kaniko-executor-build rules: - if: '$CI_COMMIT_BRANCH == "master"' tags: - podman В infrastructure/gitlab-ci-templates есть файлик kaniko-executor-build.yml У него тоже есть некая вложенность, например. Он содержит в себе kaniko-executor-global-vars.yml где есть версия канико и путь до образа контейнера.
Обсуждают сегодня