.circleci/config.yml 분할

4799 단어 circleci
이 게시물에서는 거대한 .circleci/config.yml 분할 방법을 소개합니다.

CircleCI는 .circleci/config.yml 분할을 지원하지 않으므로 모든 워크플로 및 작업 구성을 하나의 파일 .circleci/config.yml로 관리합니다.
리포지토리가 Monorepo 인 경우 서비스 수가 많을수록 .circleci/config.yml의 크기가 커지고 .circleci/config.yml을 유지 관리하기 어렵습니다.
서비스별로 .circleci/config.yml을 분할하여 .circleci/config.yml을 유지 관리하기 쉽고 분할 파일CODEOWNERS을 구성할 수 있습니다.

.circleci/config.yml을 분할하려면 분할 파일을 병합하여 .circleci/config.yml을 생성하고 분할 파일과 .circleci/config.yml을 모두 커밋해야 합니다.

circleci 구성 팩



분할 파일을 circleci config pack 명령으로 병합할 수 있지만 다른 도구circleci-config-merge를 소개합니다.

CircleCI CLI는 공식 툴이라 안정적이지만 파일명 제한과 디렉토리 구조가 좀 빡빡한 느낌이 듭니다.
같은 디렉토리에 있는 모든 파일을 관리해야 하며, 생성된 YAML 콘텐츠에 파일 경로가 반영됩니다.
circleci config pack 에 대한 자세한 내용은 공식 문서를 참조하십시오.

https://circleci.com/docs/2.0/local-cli/#packing-a-config
circleci config pack 의 제한을 수용할 수 있다면 공식 도구이므로 사용을 권장합니다.
그러나 제한 사항을 수락하기 어렵다면 circleci-config-merge 도움이 될 것입니다.

circleci 구성 병합



circleci-config-merge는 분할 파일을 병합하여 .circleci/config.yml을 생성하는 CLI 도구입니다.

circleci-config-merge의 사용법은 다음과 같다.

$ circleci-config-merge merge <file1> [<file2> ...]


파일 경로에는 제한이 없으며 분할 파일 형식은 .circleci/config.yml과 동일합니다.

예를 들어, 동일한 디렉토리에 있는 파일을 관리할 수 있습니다.

.circleci/
  config.yml # generated
  src/
    service1.yml # split config per service
    service2.yml
    ...


또는 각 서비스 디렉토리의 파일을 관리할 수도 있습니다.

service1/
  circleci/
    workflow.yml # you can split file freely
    jobs.yml
  ...
service2/
  circleci/
    config.yml
  ...
...


circleci-config-merge는 워크플로 작업 목록을 병합합니다.

예를 들어,

workflows:
  build:
    jobs:
    - foo



workflows:
  build:
    jobs:
    - bar


워크플로build의 작업은 다음과 같이 병합됩니다.

workflows:
  build:
    jobs: # sort by job name for comparison
    - bar
    - foo


CI에서 .circleci/config.yml 테스트



.circleci/config.yml을 분할하는 경우 분할 파일을 병합하여 .circleci/config.yml이 생성되는지 여부를 CI에서 테스트해야 합니다.
circleci-config-merge는 이러한 기능을 제공하지 않지만 dyff 과 같은 다른 도구로 테스트를 구현할 수 있습니다.

예제 저장소suzuki-shunsuke/example-circleci-config-merge를 만들었습니다.
이 예제를 .circleci/config.yml 분할 및 CI 설정에 대한 참조로 사용할 수 있습니다.

사용 사례



마지막으로 circleci-config-merge의 사용 사례를 소개합니다.
최근에 6,000줄이 넘는 거대한 .circleci/config.yml을 약 60개의 파일로 분할했습니다.
원래 .circleci/config.yml을 유지하기 어려웠는데 분할하여 .circleci/config.yml을 유지하기 쉬워졌습니다.
당신이 거대한 .circleci/config.yml로 고통받고 있다면, 그것을 나누자!

결론



이 게시물에서 거대한 .circleci/config.yml을 분할하는 방법을 소개했습니다.
분할 파일을 circleci-config-merge 과 병합하여 .circleci/config.yml을 생성할 수 있습니다.
분할 .circleci/config.yml 및 설정 CI에 대한 참조로 예제suzuki-shunsuke/example-circleci-config-merge를 참조하십시오.

좋은 웹페이지 즐겨찾기