Message ID | 00a9fe6b7d77c16c9fd6dfe746aacf9068a76942.1726206484.git.ps@pks.im (mailing list archive) |
---|---|
State | Accepted |
Commit | 7cd8f1cc6e17af54fb78768c259a615b1ccc0205 |
Headers | show |
Series | make linux32 ci job work with recent actions | expand |
On Fri, Sep 13, 2024 at 07:52:51AM +0200, Patrick Steinhardt wrote: > In the preceding commits we had to convert the linux32 job to be based > on Ubuntu 20.04 instead of Ubuntu 16.04 due to a limitation in GitHub > Workflows. This was the only job left that still tested against this old > but supported Ubuntu version, and we have no other jobs that test with a > comparatively old Linux distribution. > > Add a new job to GitLab CI that tests with Ubuntu 16.04 to cover the > resulting test gap. GitLab doesn't modify Docker images in the same way > GitHub does and thus doesn't fall prey to the same issue. There are two > compatibility issues uncovered by this: > > - Ubuntu 16.04 does not support HTTP/2 in Apache. We thus cannot set > `GIT_TEST_HTTPD=true`, which would otherwise cause us to fail when > Apache fails to start. > > - Ubuntu 16.04 cannot use recent JGit versions as they depend on a > more recent Java runtime than we have available. We thus disable > installing any kind of optional dependencies that do not come from > the package manager. OK, this looks reasonable to me. I do think we could have our cake and eat it too on the Apache support if we added a GIT_TEST_HTTP2 knob. But it's probably not all that big a deal in practice, and after another 1.5 years I think we'd drop this 16.04 job anyway (since it will be out of LTS then). Thanks for putting this together. -Peff
On Fri, Sep 13, 2024 at 02:21:13AM -0400, Jeff King wrote: > On Fri, Sep 13, 2024 at 07:52:51AM +0200, Patrick Steinhardt wrote: > > > In the preceding commits we had to convert the linux32 job to be based > > on Ubuntu 20.04 instead of Ubuntu 16.04 due to a limitation in GitHub > > Workflows. This was the only job left that still tested against this old > > but supported Ubuntu version, and we have no other jobs that test with a > > comparatively old Linux distribution. > > > > Add a new job to GitLab CI that tests with Ubuntu 16.04 to cover the > > resulting test gap. GitLab doesn't modify Docker images in the same way > > GitHub does and thus doesn't fall prey to the same issue. There are two > > compatibility issues uncovered by this: > > > > - Ubuntu 16.04 does not support HTTP/2 in Apache. We thus cannot set > > `GIT_TEST_HTTPD=true`, which would otherwise cause us to fail when > > Apache fails to start. > > > > - Ubuntu 16.04 cannot use recent JGit versions as they depend on a > > more recent Java runtime than we have available. We thus disable > > installing any kind of optional dependencies that do not come from > > the package manager. > > OK, this looks reasonable to me. I do think we could have our cake and > eat it too on the Apache support if we added a GIT_TEST_HTTP2 knob. But > it's probably not all that big a deal in practice, and after another 1.5 > years I think we'd drop this 16.04 job anyway (since it will be out of > LTS then). Note that we _do_ run the Apache tests, but only for HTTP/1. That's what the "auto" setting does automatically: Apache starts up just fine without the HTTP/2 module and thus we run all tests that don't rely on HTTP/2. On the other hand it fails to boot with HTTP/2, and thus we skip over these tests automatically. Patrick
On Fri, Sep 13, 2024 at 08:39:34AM +0200, Patrick Steinhardt wrote: > > OK, this looks reasonable to me. I do think we could have our cake and > > eat it too on the Apache support if we added a GIT_TEST_HTTP2 knob. But > > it's probably not all that big a deal in practice, and after another 1.5 > > years I think we'd drop this 16.04 job anyway (since it will be out of > > LTS then). > > Note that we _do_ run the Apache tests, but only for HTTP/1. That's what > the "auto" setting does automatically: Apache starts up just fine > without the HTTP/2 module and thus we run all tests that don't rely on > HTTP/2. On the other hand it fails to boot with HTTP/2, and thus we skip > over these tests automatically. Right, what I mean is that we would not notice if that job started skipping the HTTP/1 tests (e.g., because we changed something in apache.conf that didn't work on that old distro). We know it works now, but our ideal config going forward is "skip the HTTP/2 tests if needed, but fail if the HTTP/1 tests do not run". -Peff
On Fri, Sep 13, 2024 at 02:43:52AM -0400, Jeff King wrote: > On Fri, Sep 13, 2024 at 08:39:34AM +0200, Patrick Steinhardt wrote: > > > > OK, this looks reasonable to me. I do think we could have our cake and > > > eat it too on the Apache support if we added a GIT_TEST_HTTP2 knob. But > > > it's probably not all that big a deal in practice, and after another 1.5 > > > years I think we'd drop this 16.04 job anyway (since it will be out of > > > LTS then). > > > > Note that we _do_ run the Apache tests, but only for HTTP/1. That's what > > the "auto" setting does automatically: Apache starts up just fine > > without the HTTP/2 module and thus we run all tests that don't rely on > > HTTP/2. On the other hand it fails to boot with HTTP/2, and thus we skip > > over these tests automatically. > > Right, what I mean is that we would not notice if that job started > skipping the HTTP/1 tests (e.g., because we changed something in > apache.conf that didn't work on that old distro). We know it works now, > but our ideal config going forward is "skip the HTTP/2 tests if needed, > but fail if the HTTP/1 tests do not run". Ah, that's true indeed. As you mention it probably doesn't matter all that much. I think it's nice to verify that things work to the best extent possible for such old platforms. But wiring up a new prereq just for that doesn't feel all that important to me. Patrick
Jeff King <peff@peff.net> writes: > On Fri, Sep 13, 2024 at 07:52:51AM +0200, Patrick Steinhardt wrote: > >> In the preceding commits we had to convert the linux32 job to be based >> on Ubuntu 20.04 instead of Ubuntu 16.04 due to a limitation in GitHub >> Workflows. This was the only job left that still tested against this old >> but supported Ubuntu version, and we have no other jobs that test with a >> comparatively old Linux distribution. >> >> Add a new job to GitLab CI that tests with Ubuntu 16.04 to cover the >> resulting test gap. GitLab doesn't modify Docker images in the same way >> GitHub does and thus doesn't fall prey to the same issue. There are two >> compatibility issues uncovered by this: >> >> - Ubuntu 16.04 does not support HTTP/2 in Apache. We thus cannot set >> `GIT_TEST_HTTPD=true`, which would otherwise cause us to fail when >> Apache fails to start. >> >> - Ubuntu 16.04 cannot use recent JGit versions as they depend on a >> more recent Java runtime than we have available. We thus disable >> installing any kind of optional dependencies that do not come from >> the package manager. > > OK, this looks reasonable to me. I do think we could have our cake and > eat it too on the Apache support if we added a GIT_TEST_HTTP2 knob. But > it's probably not all that big a deal in practice, and after another 1.5 > years I think we'd drop this 16.04 job anyway (since it will be out of > LTS then). > > Thanks for putting this together. Yes, thanks, both. Queued.
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2589098eff7..80b1668ebeb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,6 +25,9 @@ test:linux: fi parallel: matrix: + - jobname: linux-old + image: ubuntu:16.04 + CC: gcc - jobname: linux-sha256 image: ubuntu:latest CC: clang diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh index 735ee6f4639..08656a15308 100755 --- a/ci/install-dependencies.sh +++ b/ci/install-dependencies.sh @@ -55,6 +55,11 @@ 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" diff --git a/ci/lib.sh b/ci/lib.sh index 51f8f59a296..74b430be238 100755 --- a/ci/lib.sh +++ b/ci/lib.sh @@ -336,7 +336,14 @@ ubuntu-*) fi MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/$PYTHON_PACKAGE" - export GIT_TEST_HTTPD=true + case "$distro" in + ubuntu-16.04) + # Apache is too old for HTTP/2. + ;; + *) + export GIT_TEST_HTTPD=true + ;; + esac # The Linux build installs the defined dependency versions below. # The OS X build installs much more recent versions, whichever
In the preceding commits we had to convert the linux32 job to be based on Ubuntu 20.04 instead of Ubuntu 16.04 due to a limitation in GitHub Workflows. This was the only job left that still tested against this old but supported Ubuntu version, and we have no other jobs that test with a comparatively old Linux distribution. Add a new job to GitLab CI that tests with Ubuntu 16.04 to cover the resulting test gap. GitLab doesn't modify Docker images in the same way GitHub does and thus doesn't fall prey to the same issue. There are two compatibility issues uncovered by this: - Ubuntu 16.04 does not support HTTP/2 in Apache. We thus cannot set `GIT_TEST_HTTPD=true`, which would otherwise cause us to fail when Apache fails to start. - Ubuntu 16.04 cannot use recent JGit versions as they depend on a more recent Java runtime than we have available. We thus disable installing any kind of optional dependencies that do not come from the package manager. These two restrictions are fine though, as we only really care about whether Git compiles and runs on such old distributions in the first place. Signed-off-by: Patrick Steinhardt <ps@pks.im> --- Test runs of this can be found at [1]. Note that the Alpine Linux jobs fail, due to an upstream regression in libcurl [2]. [1]: https://gitlab.com/gitlab-org/git/-/merge_requests/210 [2]: <ZuPKvYP9ZZ2mhb4m@pks.im> .gitlab-ci.yml | 3 +++ ci/install-dependencies.sh | 5 +++++ ci/lib.sh | 9 ++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) base-commit: f33406dbcc16e699be71aa4982133c325838ae1b