From 2a21098b98ae2f9581a91e2e474c397e5cbede12 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Fri, 10 Jan 2025 12:31:59 +0100 Subject: github: adapt containerized jobs to be rootless The containerized jobs in GitHub Actions run as root, giving them special permissions to for example delete files even when the user shouldn't be able to due to file permissions. This limitation keeps us from using containerized jobs for most of our Ubuntu-based jobs as it causes a number of tests to fail. Adapt the jobs to create a separate user that executes the test suite. This follows similar infrastructure that we already have in GitLab CI. Signed-off-by: Patrick Steinhardt Signed-off-by: Junio C Hamano --- ci/install-dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ci') diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh index d1cb9fa878..ecb5b9d36c 100755 --- a/ci/install-dependencies.sh +++ b/ci/install-dependencies.sh @@ -31,7 +31,7 @@ alpine-*) ;; 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 + dnf -yq install shadow-utils sudo make gcc findutils diffutils perl python3 gettext zlib-devel expat-devel openssl-devel curl-devel pcre2-devel >/dev/null ;; ubuntu-*|ubuntu32-*|debian-*) # Required so that apt doesn't wait for user input on certain packages. -- cgit v1.3-5-g45d5 From b133d3071ae6c648aced1c40e12914cb6b2ccec9 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Fri, 10 Jan 2025 12:32:01 +0100 Subject: github: simplify computation of the job's distro We explicitly list the distro of Linux-based jobs, but it is equivalent to the name of the image in almost all cases, except that colons are replaced with dashes. Drop the redundant information and massage it in our CI scripts, which is equivalent to how we do it in GitLab CI. There are a couple of exceptions: - The "linux32" job, whose distro name is different than the image name. This is handled by adapting all sites to use the new name. - The "alpine" and "fedora" jobs, neither of which specify a tag for their image. This is handled by adding the "latest" tag. Signed-off-by: Patrick Steinhardt Signed-off-by: Junio C Hamano --- .github/workflows/main.yml | 22 ++++------------------ ci/install-dependencies.sh | 4 ++-- ci/lib.sh | 2 ++ 3 files changed, 8 insertions(+), 20 deletions(-) (limited to 'ci') diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8e5847da4f..b54da639a6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -275,7 +275,7 @@ jobs: CC: ${{matrix.vector.cc}} CC_PACKAGE: ${{matrix.vector.cc_package}} jobname: ${{matrix.vector.jobname}} - distro: ${{matrix.vector.pool}} + CI_JOB_IMAGE: ${{matrix.vector.pool}} TEST_OUTPUT_DIRECTORY: ${{github.workspace}}/t runs-on: ${{matrix.vector.pool}} steps: @@ -316,63 +316,49 @@ jobs: - jobname: linux-sha256 image: ubuntu:latest cc: clang - distro: ubuntu-latest - jobname: linux-reftable image: ubuntu:latest cc: clang - distro: ubuntu-latest - jobname: linux-gcc image: ubuntu:20.04 cc: gcc cc_package: gcc-8 - distro: ubuntu-20.04 - jobname: linux-TEST-vars image: ubuntu:20.04 cc: gcc cc_package: gcc-8 - distro: ubuntu-20.04 - jobname: linux-gcc-default image: ubuntu:latest cc: gcc - distro: ubuntu-latest - jobname: linux-leaks image: ubuntu:latest cc: gcc - distro: ubuntu-latest - jobname: linux-reftable-leaks image: ubuntu:latest cc: gcc - distro: ubuntu-latest - jobname: linux-asan-ubsan image: ubuntu:latest cc: clang - distro: ubuntu-latest - jobname: linux-meson image: ubuntu:latest cc: gcc - distro: ubuntu-latest - jobname: linux-musl - image: alpine - distro: alpine-latest + image: alpine:latest # Supported until 2025-04-02. - jobname: linux32 image: i386/ubuntu:focal - distro: ubuntu32-20.04 - jobname: pedantic - image: fedora - distro: fedora-latest + image: 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}} CC: ${{matrix.vector.cc}} + CI_JOB_IMAGE: ${{matrix.vector.image}} runs-on: ubuntu-latest container: ${{matrix.vector.image}} steps: diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh index ecb5b9d36c..d5a959e25f 100755 --- a/ci/install-dependencies.sh +++ b/ci/install-dependencies.sh @@ -33,7 +33,7 @@ fedora-*|almalinux-*) dnf -yq update >/dev/null && dnf -yq install shadow-utils sudo make gcc findutils diffutils perl python3 gettext zlib-devel expat-devel openssl-devel curl-devel pcre2-devel >/dev/null ;; -ubuntu-*|ubuntu32-*|debian-*) +ubuntu-*|i386/ubuntu-*|debian-*) # Required so that apt doesn't wait for user input on certain packages. export DEBIAN_FRONTEND=noninteractive @@ -42,7 +42,7 @@ ubuntu-*|ubuntu32-*|debian-*) SVN='libsvn-perl subversion' LANGUAGES='language-pack-is' ;; - ubuntu32-*) + i386/ubuntu-*) SVN= LANGUAGES='language-pack-is' ;; diff --git a/ci/lib.sh b/ci/lib.sh index 8885ee3c3f..f8b68ab8a6 100755 --- a/ci/lib.sh +++ b/ci/lib.sh @@ -246,6 +246,8 @@ then GIT_TEST_OPTS="--github-workflow-markup" JOBS=10 + + distro=$(echo "$CI_JOB_IMAGE" | tr : -) elif test true = "$GITLAB_CI" then CI_TYPE=gitlab-ci -- cgit v1.3-5-g45d5 From 4ad71b16cdc8f5f367931b908fa904e8e8c48b47 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Fri, 10 Jan 2025 12:32:03 +0100 Subject: gitlab-ci: add linux32 job testing against i386 Add another job to GitLab CI that tests against the i386 architecture. This job is equivalent to the same job in GitHub Workflows. Signed-off-by: Patrick Steinhardt Signed-off-by: Junio C Hamano --- .gitlab-ci.yml | 2 ++ ci/lib.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'ci') diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 00bc727865..29e9056dd5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -66,6 +66,8 @@ test:linux: image: fedora:latest - jobname: linux-musl image: alpine:latest + - jobname: linux32 + image: i386/ubuntu:20.04 - jobname: linux-meson image: ubuntu:latest CC: gcc diff --git a/ci/lib.sh b/ci/lib.sh index f8b68ab8a6..2293849ada 100755 --- a/ci/lib.sh +++ b/ci/lib.sh @@ -269,7 +269,7 @@ then CI_OS_NAME=osx JOBS=$(nproc) ;; - *,alpine:*|*,fedora:*|*,ubuntu:*) + *,alpine:*|*,fedora:*|*,ubuntu:*|*,i386/ubuntu:*) CI_OS_NAME=linux JOBS=$(nproc) ;; -- cgit v1.3-5-g45d5 From 678b22f528d533ab49944a696639e664d301a7e7 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Fri, 10 Jan 2025 12:32:04 +0100 Subject: ci: stop special-casing for Ubuntu 16.04 With c85bcb5de1 (gitlab-ci: switch from Ubuntu 16.04 to 20.04, 2024-10-31) we have adapted the last CI job to stop using Ubuntu 16.04 in favor of Ubuntu 20.04. Remove the special-casing we still have in our CI scripts. Signed-off-by: Patrick Steinhardt Signed-off-by: Junio C Hamano --- ci/lib.sh | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'ci') diff --git a/ci/lib.sh b/ci/lib.sh index 2293849ada..77a4aabdb8 100755 --- a/ci/lib.sh +++ b/ci/lib.sh @@ -347,14 +347,7 @@ ubuntu-*) fi MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/$PYTHON_PACKAGE" - case "$distro" in - ubuntu-16.04) - # Apache is too old for HTTP/2. - ;; - *) - export GIT_TEST_HTTPD=true - ;; - esac + export GIT_TEST_HTTPD=true # The Linux build installs the defined dependency versions below. # The OS X build installs much more recent versions, whichever -- cgit v1.3-5-g45d5 From e39e332e5043d7e8f48fbfc91c3bd6d45a52cb7b Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Fri, 10 Jan 2025 12:32:06 +0100 Subject: ci: remove stale code for Azure Pipelines Support for Azure Pipelines has been retired in 6081d3898f (ci: retire the Azure Pipelines definition, 2020-04-11) in favor of GitHub Actions. Our CI library still has some infrastructure left for Azure though that is now unused. Remove it. Signed-off-by: Patrick Steinhardt Signed-off-by: Junio C Hamano --- ci/lib.sh | 21 +-------------------- ci/print-test-failures.sh | 5 ----- 2 files changed, 1 insertion(+), 25 deletions(-) (limited to 'ci') diff --git a/ci/lib.sh b/ci/lib.sh index 77a4aabdb8..4003354f16 100755 --- a/ci/lib.sh +++ b/ci/lib.sh @@ -206,26 +206,7 @@ export TERM=${TERM:-dumb} # Clear MAKEFLAGS that may come from the outside world. export MAKEFLAGS= -if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI" -then - CI_TYPE=azure-pipelines - # We are running in Azure Pipelines - CI_BRANCH="$BUILD_SOURCEBRANCH" - CI_COMMIT="$BUILD_SOURCEVERSION" - CI_JOB_ID="$BUILD_BUILDID" - CI_JOB_NUMBER="$BUILD_BUILDNUMBER" - CI_OS_NAME="$(echo "$AGENT_OS" | tr A-Z a-z)" - test darwin != "$CI_OS_NAME" || CI_OS_NAME=osx - CI_REPO_SLUG="$(expr "$BUILD_REPOSITORY_URI" : '.*/\([^/]*/[^/]*\)$')" - CC="${CC:-gcc}" - - # use a subdirectory of the cache dir (because the file share is shared - # among *all* phases) - cache_dir="$HOME/test-cache/$SYSTEM_PHASENAME" - - GIT_TEST_OPTS="--write-junit-xml" - JOBS=10 -elif test true = "$GITHUB_ACTIONS" +if test true = "$GITHUB_ACTIONS" then CI_TYPE=github-actions CI_BRANCH="$GITHUB_REF" diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh index 655687dd82..dc910e5160 100755 --- a/ci/print-test-failures.sh +++ b/ci/print-test-failures.sh @@ -39,11 +39,6 @@ do test_name="${test_name##*/}" trash_dir="trash directory.$test_name" case "$CI_TYPE" in - azure-pipelines) - mkdir -p failed-test-artifacts - mv "$trash_dir" failed-test-artifacts - continue - ;; github-actions) mkdir -p failed-test-artifacts echo "FAILED_TEST_ARTIFACTS=${TEST_OUTPUT_DIRECTORY:t}/failed-test-artifacts" >>$GITHUB_ENV -- cgit v1.3-5-g45d5