LoginSignup
6
3

More than 5 years have passed since last update.

CircleCI 2.1のOrbを利用したShallow Cloneチェックアウトでチェックアウトを高速化する

Posted at

はじめに

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秒かかりました。

スクリーンショット 2018-12-11 23.12.48.png

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秒と逆に遅くなってしまいました。

スクリーンショット 2018-12-11 23.11.56.png

CircleCI 2.1のOrbを利用してShallow Cloneチェックアウトした場合

最後に、CircleCI 2.1のOrbを利用してShallow Cloneチェックアウトした場合です。

config.yaml
version: 2.1
orbs:
  ganta-git: ganta/git@1.2.0
jobs:
  build:
    steps:
      - ganta-git/shallow-clone-checkout

Orbを利用してShallow Cloneチェックアウトした場合は、チェックアウトが33秒で完了するようになりました。

スクリーンショット 2018-12-11 23.03.39.png

まとめ

CircleCI 2.1はいいぞ。


  1. 自分でOrbを作って公開することもできます。 

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3