]> git.ipfire.org Git - thirdparty/git.git/commitdiff
CI: use "$runs_on_pool", not "$jobname" to select packages & config
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 23 Nov 2021 16:29:11 +0000 (17:29 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 Nov 2021 00:51:53 +0000 (16:51 -0800)
Change the setup hooks for the CI to use "$runs_on_pool" for the
"$regular" job. Now we won't need as much boilerplate when adding new
jobs to the "regular" matrix, see 956d2e4639b (tests: add a test mode
for SANITIZE=leak, run it in CI, 2021-09-23) for the last such commit.

I.e. now instead of needing to enumerate each jobname when we select
packages we can install things depending on the pool we're running
in.

That we didn't do this dates back to the now gone dependency on Travis
CI, but even if we add a new CI target in the future this'll be easier
to port over, since we can probably treat "ubuntu-latest" as a
stand-in for some recent Linux that can run "apt" commands.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
.github/workflows/main.yml
ci/install-dependencies.sh
ci/lib.sh

index 91b565f75bb13df69c822fcabf1a6fb041c0de10..d402402a18b12c93c0962856af5e6f01e7d9a113 100644 (file)
@@ -227,12 +227,14 @@ jobs:
             pool: ubuntu-latest
           - jobname: linux-gcc
             cc: gcc
+            cc_package: gcc-8
             pool: ubuntu-latest
           - jobname: osx-clang
             cc: clang
             pool: macos-latest
           - jobname: osx-gcc
             cc: gcc
+            cc_package: gcc-9
             pool: macos-latest
           - jobname: linux-gcc-default
             cc: gcc
@@ -242,7 +244,9 @@ jobs:
             pool: ubuntu-latest
     env:
       CC: ${{matrix.vector.cc}}
+      CC_PACKAGE: ${{matrix.vector.cc_package}}
       jobname: ${{matrix.vector.jobname}}
+      runs_on_pool: ${{matrix.vector.pool}}
     runs-on: ${{matrix.vector.pool}}
     steps:
     - uses: actions/checkout@v2
index 49a4ae7a9882c469974b481d4120dd632172dac3..dbcebad2fb293303f9271850094a29c3a249bda6 100755 (executable)
@@ -11,17 +11,11 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
  tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
  libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
 
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
        sudo apt-get -q update
        sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
-               $UBUNTU_COMMON_PKGS
-       case "$jobname" in
-       linux-gcc)
-               sudo apt-get -q -y install gcc-8
-               ;;
-       esac
-
+               $UBUNTU_COMMON_PKGS $CC_PACKAGE
        mkdir --parents "$P4_PATH"
        pushd "$P4_PATH"
                wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
@@ -36,7 +30,7 @@ linux-clang|linux-gcc|linux-leaks)
                cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
        popd
        ;;
-osx-clang|osx-gcc)
+macos-latest)
        export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
        # Uncomment this if you want to run perf tests:
        # brew install gnu-time
@@ -50,15 +44,17 @@ osx-clang|osx-gcc)
                brew install --cask --no-quarantine perforce
        } ||
        brew install homebrew/cask/perforce
-       case "$jobname" in
-       osx-gcc)
-               brew install gcc@9
-               # Just in case the image is updated to contain gcc@9
-               # pre-installed but not linked.
-               brew link gcc@9
-               ;;
-       esac
+
+       if test -n "$CC_PACKAGE"
+       then
+               BREW_PACKAGE=${CC_PACKAGE/-/@}
+               brew install "$BREW_PACKAGE"
+               brew link "$BREW_PACKAGE"
+       fi
        ;;
+esac
+
+case "$jobname" in
 StaticAnalysis)
        sudo apt-get -q update
        sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
index 0b3b01448829ca705984da1a7e369f49d3b7f7dc..cbc2f8f1caa6c0ddf69824b03e9394aecbcac250 100755 (executable)
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -156,11 +156,15 @@ export DEFAULT_TEST_TARGET=prove
 export GIT_TEST_CLONE_2GB=true
 export SKIP_DASHED_BUILT_INS=YesPlease
 
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
+       if test "$jobname" = "linux-gcc-default"
+       then
+               break
+       fi
+
        if [ "$jobname" = linux-gcc ]
        then
-               export CC=gcc-8
                MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
        else
                MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
@@ -180,17 +184,17 @@ linux-clang|linux-gcc|linux-leaks)
        GIT_LFS_PATH="$HOME/custom/git-lfs"
        export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
        ;;
-osx-clang|osx-gcc)
+macos-latest)
        if [ "$jobname" = osx-gcc ]
        then
-               export CC=gcc-9
                MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
        else
                MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
        fi
        ;;
-linux-gcc-default)
-       ;;
+esac
+
+case "$jobname" in
 linux32)
        CC=gcc
        ;;
@@ -200,9 +204,6 @@ linux-musl)
        MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
        MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
        ;;
-esac
-
-case "$jobname" in
 linux-leaks)
        export SANITIZE=leak
        export GIT_TEST_PASSING_SANITIZE_LEAK=true