CircleCIを利用するとき、リポジトリからgit cloneをします。実際には、用意されているcheckout
コマンドを利用することが多いと思います。
リポジトリサイズが大きい場合(バイナリファイルが多く含まれるなど)、すべてをgit cloneするとデータ量が多く時間がかかる可能性があります。 そのため、1秒でも早くgit cloneするために、CircleCIでgit shallow cloneをしてみます。
おすすめの方
- CircleCIでgit shallow cloneしたい方
- CircleCIで1秒でも早くgit cloneしたい方
実験用のリポジトリを作成して、CircleCIを設定する
実験用のリポジトリを作成する
適当にリポジトリを作成します。
READMEを適当に記載する
# CircleCI-git-shallow-clone-test
## 今日の天気
晴れです。
## 明日の天気
雨です。
CircleCIの設定ファイルを作成する
mkdir .circleci
touch .circleci/config.yml
CircleCIのconfigファイル
git-shallow-cloneのCircleCI Orbを利用します。今回はデフォルトで利用しますが、いくつかのオプションも指定できます。
config.yml
version: 2.1
orbs:
# https://circleci.com/developer/orbs/orb/guitarrapc/git-shallow-clone
git-shallow-clone: guitarrapc/git-shallow-clone@2.8.0
jobs:
build:
docker:
- image: cimg/base:2023.10
steps:
- git-shallow-clone/checkout
- run: echo "this is the build job"
- run: cat README.md
test:
docker:
- image: cimg/base:2023.10
steps:
- git-shallow-clone/checkout
- run: echo "this is the test job"
- run: cat README.md
workflows:
build_and_test:
jobs:
- build
- test:
requires:
- build
更新後、git pushします。
CircleCIでプロジェクトを設定する
もし、3rd party製のCircleCI Orbを利用できない場合は、Orb Security Settings を確認し、更新してください。
Jobを確認すると、mainブランチのREADME.mdが表示されました。
いろんなブランチでREADME.mdを更新して確認する
aaaブランチ
mainブランチをベースにして、aaaブランチを作成します。
git switch -c aaa main
# CircleCI-git-shallow-clone-test
## 今日の天気aaa
晴れです。
## 明日の天気aaa
雨です。
git pushしてREADME.mdを確認すると、問題ありません。
bbbブランチ
aaaブランチをベースにして、bbbブランチを作成します。
git switch -c bbb aaa
# CircleCI-git-shallow-clone-test
## 今日の天気aaa
晴れです。bbb
## 明日の天気aaa
雨です。bbb
git pushしてREADME.mdを確認すると、問題ありません。
xxxブランチ
mainブランチをベースにして、xxxブランチを作成します。
git switch -c xxx main
# CircleCI-git-shallow-clone-test
## 今日の天気
xxx晴れです。
## 明日の天気
xxx雨です。
git pushしてREADME.mdを確認すると、問題ありません。
さいごに
CircleCIでshallow clone(depth指定)をしてみました。 リポジトリ規模が大きい場合や、cloneで取得するデータ量を少なくしたい場合などに活用できると思います。