Description
I'm experimenting with Github Actions on a large code repository at $WORK
. We use a mix of Concourse ci and Jenkins and are looking towards Github Actions as a potential CI/CD tool with less hosting maintenance.
In some simple experiments we found the actions/checkout command to be slower that expected. A checkout step takes ~6m 53s
using with.fetch-depth: 1
, and that's before my job can do anything useful.
In our Jenkins set up we have a persistent clone that we do local clones from. In concourse we use the git resource. In both cases the process of fetching a given version of the code feels faster than actions/checkout and was wondering if there as any actions tuning parameters would could apply to speed up the process
I can see a glimpse into what the action is doing in the output.
git remote add origin https://github.com/{org}/{repo}
git config gc.auto 0
git config --get-all http.https://github.com/{org}/{repo}.extraheader
git config --get-all http.proxy
git -c http.extraheader="AUTHORIZATION: basic ***" fetch --tags --prune --progress --no-recurse-submodules --depth=1 origin +refs/heads/*:refs/remotes/origin/*
Is there a way we can opt out of features like fetching all of the tags (we have a lot of tags) or submodules (we don't use submodules)?
I started looking at want concourse git resource does to draw some comparisons. Looking here I can see it does something like a clone + checkout operation
git clone --single-branch $depthflag $uri $branchflag $destination $tagflag
cd $destination
git fetch origin refs/notes/*:refs/notes/* $tagflag
if [ "$depth" -gt 0 ]; then
"$bin_dir"/deepen_shallow_clone_until_ref_is_found_then_check_out "$depth" "$ref" "$tagflag"
else
git checkout -q "$ref"
fi
I'm not sure if that's any better or worse our experience is that it "feels" more performance that what we see with github actions/checkout.