threads / patch / 62432

patch, 3 partsgitlab-ci: switch from Ubuntu 16.04 to 20.04

Subject: [PATCH 1/3] gitlab-ci: switch from Ubuntu 16.04 to 20.04

## tl;dr

8 messages between Oct 31, 2024 and Nov 4, 2024. Diffs are folded; open one to read it.

replies: 7people: 3as markdown or json

brian m. carlson· Oct 31, 2024, 23:49 UTC · lore

[PATCH 0/3] Improve CI testing of older systems

In many cases, we're not testing some of the older Linux distributions that we support. However, we _are_ testing some old Linux distributions that we _don't_ support. That means that it's presently difficult for us to make sure our code works on all the systems we want it to and that we're not accidentally requiring newer versions of dependencies than we claim to support.

The first patch removes Ubuntu 16.04, which is out of regular LTS support. The second removes the clause in the CI job for that OS. The third adds several new CI jobs to make sure we're adequately supporting older Debian and RHEL-compatible distros, and documents the dates at which they lose support (so it's easy to know if we need to update them).

brian m. carlson (3):
  gitlab-ci: switch from Ubuntu 16.04 to 20.04
  ci: remove clause for Ubuntu 16.04
  Add additional CI jobs to avoid accidental breakage
 .github/workflows/main.yml |  9 +++++++++
 .gitlab-ci.yml             |  2 +-
 ci/install-dependencies.sh | 19 ++++++++++---------
 3 files changed, 20 insertions(+), 10 deletions(-)
brian m. carlson· Oct 31, 2024, 23:49 UTC · re: brian m. carlson · lore

Ubuntu 16.04 is past its normal LTS lifespan, so let's switch to Ubuntu 20.04 instead, which is the latest regular LTS version.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to .gitlab-ci.yml +1 −1
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 526ecfe030..a1bc92893f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -35,7 +35,7 @@ test:linux:
   parallel:
     matrix:
       - jobname: linux-old
-        image: ubuntu:16.04
+        image: ubuntu:20.04
         CC: gcc
       - jobname: linux-sha256
         image: ubuntu:latest
brian m. carlson· Oct 31, 2024, 23:49 UTC · re: brian m. carlson · lore

[PATCH 3/3] Add additional CI jobs to avoid accidental breakage

In general, we'd like to make sure Git works on the LTS versions of major Linux distributions. To do that, let's add CI jobs for the oldest regular (non-extended) LTS versions of the major distributions: Ubuntu 20.04, Debian 11, and RHEL 8. Because RHEL isn't available to the public at no charge, use AlmaLinux, which is binary compatible with it.

Note that Debian does not offer the language-pack packages, but suitable locale support can be installed with the locales-all package. Otherwise, use the set of installation instructions which exist and are most similar to the existing supported distros.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 .github/workflows/main.yml |  9 +++++++++
 ci/install-dependencies.sh | 14 ++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)
Show changes to 2 files +19 −4

.github/workflows/main.yml, ci/install-dependencies.sh

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9301a1edd6..808ddc19b8 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -342,12 +342,21 @@ jobs:
         - jobname: linux-musl
           image: alpine
           distro: alpine-latest
+        # Supported until 2025-04-02.
         - jobname: linux32
           image: i386/ubuntu:focal
           distro: ubuntu32-20.04
         - jobname: pedantic
           image: fedora
           distro: fedora-latest
+        # A RHEL 8 compatible distro.  Supported until 2029-05-31.
+        - jobname: almalinux-8
+          image: almalinux:8
+          distro: almalinux-8
+        # Supported until 2026-08-31.
+        - jobname: debian-11
+          image: debian:11
+          distro: debian-11
     env:
       jobname: ${{matrix.vector.jobname}}
       distro: ${{matrix.vector.distro}}
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index d30ae53a18..d020cb7aa5 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -29,26 +29,32 @@ alpine-*)
 		apache2 apache2-http2 apache2-proxy apache2-ssl apache2-webdav apr-util-dbd_sqlite3 \
 		bash cvs gnupg perl-cgi perl-dbd-sqlite perl-io-tty >/dev/null
 	;;
-fedora-*)
+fedora-*|almalinux-*)
 	dnf -yq update >/dev/null &&
 	dnf -yq install make gcc findutils diffutils perl python3 gettext zlib-devel expat-devel openssl-devel curl-devel pcre2-devel >/dev/null
 	;;
-ubuntu-*|ubuntu32-*)
+ubuntu-*|ubuntu32-*|debian-*)
 	# Required so that apt doesn't wait for user input on certain packages.
 	export DEBIAN_FRONTEND=noninteractive
 
 	case "$distro" in
 	ubuntu-*)
 		SVN='libsvn-perl subversion'
+		LANGUAGES='language-pack-is'
+		;;
+	ubuntu32-*)
+		SVN=
+		LANGUAGES='language-pack-is'
 		;;
 	*)
-		SVN=
+		SVN='libsvn-perl subversion'
+		LANGUAGES='locales-all'
 		;;
 	esac
 
 	sudo apt-get -q update
 	sudo apt-get -q -y install \
-		language-pack-is apache2 cvs cvsps git gnupg $SVN \
+		$LANGUAGES apache2 cvs cvsps git gnupg $SVN \
 		make libssl-dev libcurl4-openssl-dev libexpat-dev wget sudo default-jre \
 		tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl \
 		libemail-valid-perl libio-pty-perl libio-socket-ssl-perl libnet-smtp-ssl-perl libdbd-sqlite3-perl libcgi-pm-perl \
brian m. carlson· Oct 31, 2024, 23:49 UTC · re: brian m. carlson · lore

[PATCH 2/3] ci: remove clause for Ubuntu 16.04

We're no longer testing this version and it's well beyond regular LTS support now, so remove the stanza for it from the case statement in our CI code.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 ci/install-dependencies.sh | 5 -----
 1 file changed, 5 deletions(-)
Show changes to ci/install-dependencies.sh +0 −5
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 126e570eb4..d30ae53a18 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -55,11 +55,6 @@ ubuntu-*|ubuntu32-*)
 		${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE
 
 	case "$distro" in
-	ubuntu-16.04)
-		# Does not support JGit, but we also don't really care about
-		# the others. We rather care whether Git still compiles and
-		# runs fine overall.
-		;;
 	ubuntu-*)
 		mkdir --parents "$CUSTOM_PATH"
 
Junio C Hamano· Nov 1, 2024, 00:34 UTC · re: brian m. carlson · lore

Re: [PATCH 2/3] ci: remove clause for Ubuntu 16.04

"brian m. carlson" <sandals@crustytoothpaste.net> writes:
> We're no longer testing this version and it's well beyond regular LTS
> support now, so remove the stanza for it from the case statement in our
> CI code.

Something like "we replaced it with 20.04 which does not need the corresponding special casing" would be necessary to explain why this is a good change, as opposed to an equally plausible-looking patch that replaces 16.04 with 20.04 and otherwise keeps the "stanza".

Show 21 quoted lines
> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  ci/install-dependencies.sh | 5 -----
>  1 file changed, 5 deletions(-)
>
> diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
> index 126e570eb4..d30ae53a18 100755
> --- a/ci/install-dependencies.sh
> +++ b/ci/install-dependencies.sh
> @@ -55,11 +55,6 @@ ubuntu-*|ubuntu32-*)
>  		${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE
>  
>  	case "$distro" in
> -	ubuntu-16.04)
> -		# Does not support JGit, but we also don't really care about
> -		# the others. We rather care whether Git still compiles and
> -		# runs fine overall.
> -		;;
>  	ubuntu-*)
>  		mkdir --parents "$CUSTOM_PATH"
>  
brian m. carlson· Nov 1, 2024, 00:38 UTC · re: Junio C Hamano · lore

Re: [PATCH 2/3] ci: remove clause for Ubuntu 16.04

On 2024-11-01 at 00:34:14, Junio C Hamano wrote:
Show 10 quoted lines
> "brian m. carlson" <sandals@crustytoothpaste.net> writes:
> 
> > We're no longer testing this version and it's well beyond regular LTS
> > support now, so remove the stanza for it from the case statement in our
> > CI code.
> 
> Something like "we replaced it with 20.04 which does not need the
> corresponding special casing" would be necessary to explain why this
> is a good change, as opposed to an equally plausible-looking patch
> that replaces 16.04 with 20.04 and otherwise keeps the "stanza".
Sure, I can mention that in v2.
-- 
brian m. carlson (they/them or he/him)
Toronto, Ontario, CA
Junio C Hamano· Nov 1, 2024, 00:41 UTC · re: Junio C Hamano · lore

Re: [PATCH 2/3] ci: remove clause for Ubuntu 16.04

Junio C Hamano <gitster@pobox.com> writes:
Show 10 quoted lines
> "brian m. carlson" <sandals@crustytoothpaste.net> writes:
>
>> We're no longer testing this version and it's well beyond regular LTS
>> support now, so remove the stanza for it from the case statement in our
>> CI code.
>
> Something like "we replaced it with 20.04 which does not need the
> corresponding special casing" would be necessary to explain why this
> is a good change, as opposed to an equally plausible-looking patch
> that replaces 16.04 with 20.04 and otherwise keeps the "stanza".
Ah, I take it back (or atleast a half of it).  

We have been already using 20.04 on the .github/ side, and 1/3 removed only from .gitlab-ci removing the last user of 16.04, so presumably this has already tested well for 20.04 and there is no need to add "corresponding special casing".

I'll keep reading the list backwards, this time resisting my temptation to utter nonsense without thinking much, attempting to catch up.

Thanks.
Show 21 quoted lines
>> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
>> ---
>>  ci/install-dependencies.sh | 5 -----
>>  1 file changed, 5 deletions(-)
>>
>> diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
>> index 126e570eb4..d30ae53a18 100755
>> --- a/ci/install-dependencies.sh
>> +++ b/ci/install-dependencies.sh
>> @@ -55,11 +55,6 @@ ubuntu-*|ubuntu32-*)
>>  		${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE
>>  
>>  	case "$distro" in
>> -	ubuntu-16.04)
>> -		# Does not support JGit, but we also don't really care about
>> -		# the others. We rather care whether Git still compiles and
>> -		# runs fine overall.
>> -		;;
>>  	ubuntu-*)
>>  		mkdir --parents "$CUSTOM_PATH"
>>  
Patrick Steinhardt· Nov 4, 2024, 11:36 UTC · re: brian m. carlson · lore

Re: [PATCH 0/3] Improve CI testing of older systems

On Thu, Oct 31, 2024 at 11:49:31PM +0000, brian m. carlson wrote:
Show 13 quoted lines
> In many cases, we're not testing some of the older Linux distributions
> that we support.  However, we _are_ testing some old Linux distributions
> that we _don't_ support.  That means that it's presently difficult for
> us to make sure our code works on all the systems we want it to and that
> we're not accidentally requiring newer versions of dependencies than we
> claim to support.
> 
> The first patch removes Ubuntu 16.04, which is out of regular LTS
> support.  The second removes the clause in the CI job for that OS.  The
> third adds several new CI jobs to make sure we're adequately supporting
> older Debian and RHEL-compatible distros, and documents the dates at
> which they lose support (so it's easy to know if we need to update
> them).

The GitLab CI-related changes all look good to me, thanks! The GitHub ones do, too, but I feel less qualified to comment on them.

Patrick

← back to recent threads