Skip to content

Commit a064b0b

Browse files
KarthikNayakgitster
authored andcommitted
ci/github: install git before checking out the repository
The GitHub's CI workflow uses 'actions/checkout@v4' to checkout the repository. This action defaults to using the GitHub REST API to obtain the repository if the `git` executable isn't available. The step to build Git in the GitHub workflow can be summarized as: ... - uses: actions/checkout@v4 #1 - run: ci/install-dependencies.sh #2 ... - run: sudo --preserve-env --set-home --user=builder ci/run-build-and-tests.sh #3 ... Step #1, clones the repository, since the `git` executable isn't present at this step, it uses GitHub's REST API to obtain a tar of the repository. Step #2, installs all dependencies, which includes the `git` executable. Step #3, sets up the build, which includes setting up meson in the meson job. At this point the `git` executable is present. This means while the `git` executable is present, the repository doesn't contain the '.git' folder. To keep both the CI's (GitLab and GitHub) behavior consistent and to ensure that the build is performed on a real-world scenario, install `git` before the repository is checked out. This ensures that 'actions/checkout@v4' will clone the repository instead of using a tarball. We also update the package cache while installing `git`, this is because some distros will fail to locate the package without updating the cache. Helped-by: Phillip Wood <[email protected]> Signed-off-by: Karthik Nayak <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 5a4d746 commit a064b0b

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

.github/workflows/main.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,20 @@ jobs:
414414
- name: prepare libc6 for actions
415415
if: matrix.vector.jobname == 'linux32'
416416
run: apt -q update && apt -q -y install libc6-amd64 lib64stdc++6
417+
- name: install git in container
418+
run: |
419+
if command -v git
420+
then
421+
: # nothing to do
422+
elif command -v apk
423+
then
424+
apk add --update git
425+
elif command -v dnf
426+
then
427+
dnf -yq update && dnf -yq install git
428+
else
429+
apt-get -q update && apt-get -q -y install git
430+
fi
417431
- uses: actions/checkout@v4
418432
- run: ci/install-dependencies.sh
419433
- run: useradd builder --create-home

0 commit comments

Comments
 (0)