CircleCI Split Config Orb!

Я создал сферу CircleCI под названием Split Config. Это мой личный веселый кодинг 🙂

  • https://circleci.com/developer/orbs/orb/bufferings/split-config

Вы хотите разделить ваш конфигурационный файл?

Вы когда-нибудь думали, можно ли разделить config.yml файл ваших CircleCI проектов? Особенно это может быть важно, когда репозиторий представляет собой тип MonoRepo, который включает несколько сервисов в одном репозитории.

Хорошие новости! Split Config Orb здесь для вас!

Split Config Orb

Вы можете разделить ваш config.yml на несколько конфигурационных файлов. Эта сфера объединяет разделенные конфигурации в один YAML при запуске CircleCI и выполняет конвейер с объединенной конфигурацией.

Пример

Допустим, у вас есть несколько сервисов в вашем репозитории, как показано здесь:

Ну, это пустое место, но представьте, что там находятся исходные коды каждого сервиса 🙂

У каждого сервиса есть config.yml для этого сервиса. Например, конфиг для сервиса1 выглядит следующим образом:

version: 2.1

jobs:
  service1-say-hello:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: "Say hello"
          command: "echo Hello, World!1"

workflows:
  service1-say-hello-workflow:
    jobs:
      - common-say-hello
      - service1-say-hello
Войти в полноэкранный режим Выйти из полноэкранного режима

service2:

version: 2.1

jobs:
  service2-say-hello:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: "Say hello"
          command: "echo Hello, World!2"

workflows:
  service2-say-hello-workflow:
    jobs:
      - common-say-hello
      - service2-say-hello
Войти в полноэкранный режим Выход из полноэкранного режима

и т.д.

Orb объединяет эти конфигурационные файлы, и это будет выглядеть следующим образом:

version: 2.1
jobs:
  common-say-hello:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: Say hello
          command: echo Hello, World! common
  service1-say-hello:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: Say hello
          command: echo Hello, World!1
  service2-say-hello:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: Say hello
          command: echo Hello, World!2
  service3-say-hello:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: Say hello
          command: echo Hello, World!3
workflows:
  service1-say-hello-workflow:
    jobs:
      - common-say-hello
      - service1-say-hello
  service2-say-hello-workflow:
    jobs:
      - common-say-hello
      - service2-say-hello
  service3-say-hello-workflow:
    jobs:
      - common-say-hello
      - service3-say-hello
Войти в полноэкранный режим Выйти из полноэкранного режима

Как использовать

Это очень просто. Вам просто нужно подготовить этот config.yml

version: 2.1

setup: true

orbs:
  split-config: bufferings/split-config@0.1.0

workflows:
  generate-config:
    jobs:
      - split-config/generate-config:
          find-config-regex: .*/.circleci/config.yml
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем Orb находит файлы конфигурации в соответствии с указанным вами regex и объединяет их в один YAML-файл. После этого Orb выполняет конвейер CircleCI со сгенерированным YAML файлом.

Он использует функцию Dynamic Config в CircleCI для запуска нового конвейера. По умолчанию эта функция отключена, поэтому для начала работы включите ее.

После этого вы увидите что-то вроде этого:

Вот и все!

Вам интересно, как он объединяет конфигурации?

Как он объединяет конфигурации?

Split Config Orb использует CUE для слияния YAML файлов.

  • CUE https://cuelang.org/

CUE может импортировать YAML файл, конвертировать его в формат CUE и объединить в один CUE конфиг. Кроме того, в нем есть функция экспорта CUE-конфига в формат YAML.

Я использовал эти функции CUE для объединения ваших YAML-конфигов. CUE очень мощный, но я использую только небольшую его часть. Если вы хотите узнать больше о CUE или о том, как он объединяет несколько конфигураций CUE, пожалуйста, ознакомьтесь со спецификацией CUE!

Для получения более подробной информации

Пожалуйста, ознакомьтесь с README на GitHub:
https://github.com/bufferings/orb-split-config

Я написал несколько юзкейсов с рабочими примерами! Наслаждайтесь меньшими конфигурационными файлами

Оцените статью
devanswers.ru
Добавить комментарий