Subject: [RFH] GitHub deprecates Ubuntu 20.04 Actions runner image

From: Junio C Hamano <[email-masked]>
Date: Tue, 08 Apr 2025 13:16:07 -0700

It seems that we are hitting https://github.com/actions/runner-images/issues/11101
which deliberately breaks CI jobs running on Ubuntu 20.04 images, in preparation
for its removal targetted for Apr 15th, 2025.

The following is a random/blind attempt, but I need a lot of help ;-).

[jc: brian and Taylor CC'ed for their ac112fd4 (Add additional CI
jobs to avoid accidental breakage, 2024-10-31)]

 (1) I do not know if the deprecation schedule at GitHub is the same
     for native runner images and dockerized ones.  Do we want to
     leave the linux-TEST-vars that uses image ubuntu:20.04 alone
     for now?

 (2) If we were to update it to ubuntu:22.04, would gcc-8 still be
     the right "ancient-ish" version of the compiler, or should we
     update it as well?

 (3) Linux32 job running on image i386/ubuntu:focal has comments
     that says it is supported until 2025-04-02; should we simply
     drop that job, as 32-bit platforms are less and less relevant
     these days?  It is not so urgent but debian-11 job also should
     be replaced with something slightly newer next summer.

 (4) I have no idea how the "sparse" job, which seems to download
     pre-built sparse using magic incantation

      - name: Download a current `sparse` package
        uses: git-for-windows/get-azure-pipelines-artifact@v0
        with:
          repository: git/git
          definitionId: 10
          artifact: sparse-20.04
      - name: Install the current `sparse` package
        run: sudo dpkg -i sparse-20.04/sparse_*.deb

     is supposed to be updated.  Should that be coordinated with the
     git-for-windows project, where its .github/workflows/test.yml
     has a similar insn to build sparse-20.04?

     It appears that Dscho (CC'ed) is futzing with the generation of
     sparse package on Ubuntu 20.04 and 22.04 and getting affected
     by the same 20.04 brownout

     https://dev.azure.com/git/git/_build/results?buildId=2396&view=results

     so probably I do not have to worry about it and let Dscho take
     care of the whole thing?

 .github/workflows/main.yml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git c/.github/workflows/main.yml w/.github/workflows/main.yml
index 9959b61ece..1d4422c898 100644
--- c/.github/workflows/main.yml
+++ w/.github/workflows/main.yml
@@ -372,7 +372,7 @@ jobs:
           image: ubuntu:rolling
           cc: clang
         - jobname: linux-TEST-vars
-          image: ubuntu:20.04
+          image: ubuntu:22.04
           cc: gcc
           cc_package: gcc-8
         - jobname: linux-breaking-changes
@@ -446,7 +446,7 @@ jobs:
     if: needs.ci-config.outputs.enabled == 'yes'
     env:
       jobname: sparse
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     concurrency:
       group: sparse-${{ github.ref }}
       cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
@@ -457,9 +457,9 @@ jobs:
       with:
         repository: git/git
         definitionId: 10
-        artifact: sparse-20.04
+        artifact: sparse-22.04
     - name: Install the current `sparse` package
-      run: sudo dpkg -i sparse-20.04/sparse_*.deb
+      run: sudo dpkg -i sparse-22.04/sparse_*.deb
     - uses: actions/checkout@v4
     - name: Install other dependencies
       run: ci/install-dependencies.sh