Re: [PATCH v5 1/6] ci/github: install git before checking out the repository

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Karthik

This looks good, I've left a few comments about the wording of the commit message but I wouldn't worry too much unless you end up re-rolling for some other reason.

On 23/04/2025 09:15, Karthik Nayak wrote:
The GitHub's CI workflow uses 'actions/checkout@v4' to checkout the

We don't need "The" here

repository. This action defaults to using the GitHub REST API to obtain

I'd maybe say "falls back" rather than "defaults"

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

It would be more accurate to say that it tries to clone the repository - if we fall back to extracting a tarball then we're not cloning.

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.

I'd maybe say "source tree" instead of "repository" as it isn't a repository without a ".git" directory.

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.

Nice explanation, the code changes look good

Thanks

Phillip

Helped-by: Phillip Wood <phillip.wood123@xxxxxxxxx>
Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx>
---
  .github/workflows/main.yml | 14 ++++++++++++++
  1 file changed, 14 insertions(+)

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 37541f3d10..e9112b3a64 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -414,6 +414,20 @@ jobs:
      - name: prepare libc6 for actions
        if: matrix.vector.jobname == 'linux32'
        run: apt -q update && apt -q -y install libc6-amd64 lib64stdc++6
+    - name: install git in container
+      run: |
+        if command -v git
+        then
+          : # nothing to do
+        elif command -v apk
+        then
+          apk add --update git
+        elif command -v dnf
+        then
+          dnf -yq update && dnf -yq install git
+        else
+          apt-get -q update && apt-get -q -y install git
+        fi
      - uses: actions/checkout@v4
      - run: ci/install-dependencies.sh
      - run: useradd builder --create-home






[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux