CircleCI 2.1 Orb를 이용한 Shallow Clone 체크아웃으로 체크아웃 가속화

4447 단어 CircleCI

소개



CircleCI 2.1에서는 Orb이라는 새로운 기능을 사용할 수 있습니다.
Orb는 타사 패키지로, CircleCI Orb Registry에 게시된 Orb를 가져와서 config.yaml를 작성할 수 있습니다. 1

이 CircleCI Orb Registry에 ganta/git이라는 Orb가 공개되어 있으며, 이 Orb를 이용하는 것으로 Shallow Clone 체크아웃을 할 수 있게 됩니다.

이번에는이 ganta/git을 이용한 Shallow Clone 체크 아웃을 시도했습니다.
또, 보통 체크 아웃했을 경우 및 CircleCI 2.0의 소스 캐쉬를 사용했을 경우와 속도를 비교해 보았습니다.

검증에 사용한 리포지토리



팩 파일의 크기가 2.5GiB인 리포지토리를 사용해 검증했습니다.
$ git gc
$ git count-objects -vH
count: 378
size: 1.69 MiB
in-pack: 488802
packs: 1
size-pack: 2.50 GiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes

정상적으로 체크아웃한 경우



우선은, 보통으로 체크아웃한 경우입니다.

config.yaml
jobs:
  build:
    steps:
      - checkout

정상적으로 체크아웃하면 체크아웃에 1분 10초가 걸렸습니다.



CircleCI 2.0 소스 캐시를 사용하는 경우



다음으로 CircleCI 2.0의 소스 캐시을 사용한 경우입니다.

config.yaml
version: 2.0
jobs:
  build:
    steps:
      - restore_cache:
          keys:
            - source-v1-{{ .Branch }}-{{ .Revision }}
            - source-v1-{{ .Branch }}-
            - source-v1-            
      - checkout      
      - save_cache:
          key: source-v1-{{ .Branch }}-{{ .Revision }}
          paths:
            - ".git"

소스 캐시를 사용한 경우 체크아웃은 8초 만에 완료되지만 캐시 복원에는 35초, 캐시 저장에 1분 3초가 걸리며 총 1분 46 초와 반대로 느려져 버렸습니다.



CircleCI 2.1의 Orb를 이용하여 Shallow Clone 체크아웃한 경우



마지막으로 CircleCI 2.1의 Orb를 사용하여 Shallow Clone 체크 아웃 한 경우입니다.

config.yaml
version: 2.1
orbs:
  ganta-git: ganta/[email protected]
jobs:
  build:
    steps:
      - ganta-git/shallow-clone-checkout

Orb를 사용하여 Shallow Clone 체크아웃하면 체크아웃이 33초 내에 완료됩니다.



요약



CircleCI 2.1은 좋습니다.



직접 Orb를 만들어 공개할 수도 있습니다.

좋은 웹페이지 즐겨찾기