Merge branch 'ab/ci-updates'
Drop support for TravisCI and update test workflows at GitHub. * ab/ci-updates: CI: don't run "make test" twice in one job CI: use "$runs_on_pool", not "$jobname" to select packages & config CI: rename the "Linux32" job to lower-case "linux32" CI: use shorter names that fit in UX tooltips CI: remove Travis CI support
This commit is contained in:
commit
f9b889dd67
26
.github/workflows/main.yml
vendored
26
.github/workflows/main.yml
vendored
@ -1,4 +1,4 @@
|
||||
name: CI/PR
|
||||
name: CI
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
@ -7,6 +7,7 @@ env:
|
||||
|
||||
jobs:
|
||||
ci-config:
|
||||
name: config
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
|
||||
@ -77,6 +78,7 @@ jobs:
|
||||
}
|
||||
|
||||
windows-build:
|
||||
name: win build
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
runs-on: windows-latest
|
||||
@ -97,6 +99,7 @@ jobs:
|
||||
name: windows-artifacts
|
||||
path: artifacts
|
||||
windows-test:
|
||||
name: win test
|
||||
runs-on: windows-latest
|
||||
needs: [windows-build]
|
||||
strategy:
|
||||
@ -127,6 +130,7 @@ jobs:
|
||||
name: failed-tests-windows
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
vs-build:
|
||||
name: win+VS build
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
@ -178,6 +182,7 @@ jobs:
|
||||
name: vs-artifacts
|
||||
path: artifacts
|
||||
vs-test:
|
||||
name: win+VS test
|
||||
runs-on: windows-latest
|
||||
needs: vs-build
|
||||
strategy:
|
||||
@ -210,6 +215,7 @@ jobs:
|
||||
name: failed-tests-windows
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
regular:
|
||||
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
@ -219,14 +225,25 @@ jobs:
|
||||
- jobname: linux-clang
|
||||
cc: clang
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-sha256
|
||||
cc: clang
|
||||
os: ubuntu
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-gcc
|
||||
cc: gcc
|
||||
cc_package: gcc-8
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-TEST-vars
|
||||
cc: gcc
|
||||
os: ubuntu
|
||||
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
|
||||
@ -236,7 +253,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
|
||||
@ -251,6 +270,7 @@ jobs:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
dockerized:
|
||||
name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
@ -259,7 +279,8 @@ jobs:
|
||||
vector:
|
||||
- jobname: linux-musl
|
||||
image: alpine
|
||||
- jobname: Linux32
|
||||
- jobname: linux32
|
||||
os: ubuntu32
|
||||
image: daald/ubuntu32:xenial
|
||||
- jobname: pedantic
|
||||
image: fedora
|
||||
@ -311,6 +332,7 @@ jobs:
|
||||
run: ci/install-dependencies.sh
|
||||
- run: make sparse
|
||||
documentation:
|
||||
name: documentation
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
|
60
.travis.yml
60
.travis.yml
@ -1,60 +0,0 @@
|
||||
language: c
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/travis-cache
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
osx_image: xcode10.1
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- env: jobname=linux-gcc-default
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
- env: jobname=linux-gcc-4.8
|
||||
os: linux
|
||||
dist: trusty
|
||||
compiler:
|
||||
- env: jobname=Linux32
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
script: ci/run-docker.sh
|
||||
- env: jobname=linux-musl
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
script: ci/run-docker.sh
|
||||
- env: jobname=StaticAnalysis
|
||||
os: linux
|
||||
compiler:
|
||||
script: ci/run-static-analysis.sh
|
||||
after_failure:
|
||||
- env: jobname=Documentation
|
||||
os: linux
|
||||
compiler:
|
||||
script: ci/test-documentation.sh
|
||||
after_failure:
|
||||
|
||||
before_install: ci/install-dependencies.sh
|
||||
script: ci/run-build-and-tests.sh
|
||||
after_failure: ci/print-test-failures.sh
|
||||
|
||||
notifications:
|
||||
email: false
|
@ -1,4 +1,4 @@
|
||||
[![Build status](https://github.com/git/git/workflows/CI/PR/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
|
||||
[![Build status](https://github.com/git/git/workflows/CI/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
|
||||
|
||||
Git - fast, scalable, distributed revision control system
|
||||
=========================================================
|
||||
|
@ -11,18 +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)
|
||||
sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
|
||||
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"
|
||||
@ -37,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
|
||||
@ -51,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 \
|
||||
@ -77,7 +72,7 @@ Documentation)
|
||||
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
|
||||
sudo gem install --version 1.5.8 asciidoctor
|
||||
;;
|
||||
linux-gcc-default|linux-gcc-4.8)
|
||||
linux-gcc-default)
|
||||
sudo apt-get -q update
|
||||
sudo apt-get -q -y install $UBUNTU_COMMON_PKGS
|
||||
;;
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
|
||||
case "$jobname" in
|
||||
Linux32)
|
||||
linux32)
|
||||
linux32 --32bit i386 sh -c '
|
||||
apt update >/dev/null &&
|
||||
apt install -y build-essential libcurl4-openssl-dev \
|
||||
|
60
ci/lib.sh
60
ci/lib.sh
@ -34,7 +34,7 @@ save_good_tree () {
|
||||
# successfully before (e.g. because the branch got rebased, changing only
|
||||
# the commit messages).
|
||||
skip_good_tree () {
|
||||
if test "$TRAVIS_DEBUG_MODE" = true || test true = "$GITHUB_ACTIONS"
|
||||
if test true = "$GITHUB_ACTIONS"
|
||||
then
|
||||
return
|
||||
fi
|
||||
@ -60,7 +60,7 @@ skip_good_tree () {
|
||||
cat <<-EOF
|
||||
$(tput setaf 2)Skipping build job for commit $CI_COMMIT.$(tput sgr0)
|
||||
This commit's tree has already been built and tested successfully in build job $prev_good_job_number for commit $prev_good_commit.
|
||||
The log of that build job is available at $(url_for_job_id $prev_good_job_id)
|
||||
The log of that build job is available at $SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$prev_good_job_id
|
||||
To force a re-build delete the branch's cache and then hit 'Restart job'.
|
||||
EOF
|
||||
fi
|
||||
@ -91,29 +91,7 @@ export MAKEFLAGS=
|
||||
# and installing dependencies.
|
||||
set -ex
|
||||
|
||||
if test true = "$TRAVIS"
|
||||
then
|
||||
CI_TYPE=travis
|
||||
# When building a PR, TRAVIS_BRANCH refers to the *target* branch. Not
|
||||
# what we want here. We want the source branch instead.
|
||||
CI_BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
|
||||
CI_COMMIT="$TRAVIS_COMMIT"
|
||||
CI_JOB_ID="$TRAVIS_JOB_ID"
|
||||
CI_JOB_NUMBER="$TRAVIS_JOB_NUMBER"
|
||||
CI_OS_NAME="$TRAVIS_OS_NAME"
|
||||
CI_REPO_SLUG="$TRAVIS_REPO_SLUG"
|
||||
|
||||
cache_dir="$HOME/travis-cache"
|
||||
|
||||
url_for_job_id () {
|
||||
echo "https://travis-ci.org/$CI_REPO_SLUG/jobs/$1"
|
||||
}
|
||||
|
||||
BREW_INSTALL_PACKAGES="git-lfs gettext"
|
||||
export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
|
||||
export GIT_TEST_OPTS="--verbose-log -x --immediate"
|
||||
MAKEFLAGS="$MAKEFLAGS --jobs=2"
|
||||
elif test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
|
||||
if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
|
||||
then
|
||||
CI_TYPE=azure-pipelines
|
||||
# We are running in Azure Pipelines
|
||||
@ -130,10 +108,6 @@ then
|
||||
# among *all* phases)
|
||||
cache_dir="$HOME/test-cache/$SYSTEM_PHASENAME"
|
||||
|
||||
url_for_job_id () {
|
||||
echo "$SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$1"
|
||||
}
|
||||
|
||||
export GIT_PROVE_OPTS="--timer --jobs 10 --state=failed,slow,save"
|
||||
export GIT_TEST_OPTS="--verbose-log -x --write-junit-xml"
|
||||
MAKEFLAGS="$MAKEFLAGS --jobs=10"
|
||||
@ -182,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"
|
||||
@ -206,23 +184,18 @@ 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
|
||||
;;
|
||||
esac
|
||||
|
||||
# t9810 occasionally fails on Travis CI OS X
|
||||
# t9816 occasionally fails with "TAP out of sequence errors" on
|
||||
# Travis CI OS X
|
||||
export GIT_SKIP_TESTS="t9810 t9816"
|
||||
;;
|
||||
linux-gcc-default)
|
||||
;;
|
||||
Linux32)
|
||||
case "$jobname" in
|
||||
linux32)
|
||||
CC=gcc
|
||||
MAKEFLAGS="$MAKEFLAGS NO_UNCOMPRESS2=1"
|
||||
;;
|
||||
@ -232,9 +205,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
|
||||
|
@ -39,8 +39,6 @@ do
|
||||
test_name="${test_name##*/}"
|
||||
trash_dir="trash directory.$test_name"
|
||||
case "$CI_TYPE" in
|
||||
travis)
|
||||
;;
|
||||
azure-pipelines)
|
||||
mkdir -p failed-test-artifacts
|
||||
mv "$trash_dir" failed-test-artifacts
|
||||
@ -88,11 +86,3 @@ do
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $combined_trash_size -gt 0 ]
|
||||
then
|
||||
echo "------------------------------------------------------------------------"
|
||||
echo "Trash directories embedded in this log can be extracted by running:"
|
||||
echo
|
||||
echo " curl https://api.travis-ci.org/v3/job/$TRAVIS_JOB_ID/log.txt |./ci/util/extract-trash-dirs.sh"
|
||||
fi
|
||||
|
@ -10,16 +10,13 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
|
||||
*) ln -s "$cache_dir/.prove" t/.prove;;
|
||||
esac
|
||||
|
||||
if test "$jobname" = "pedantic"
|
||||
then
|
||||
export DEVOPTS=pedantic
|
||||
fi
|
||||
export MAKE_TARGETS="all test"
|
||||
|
||||
make
|
||||
case "$jobname" in
|
||||
linux-gcc)
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
make test
|
||||
;;
|
||||
linux-TEST-vars)
|
||||
export GIT_TEST_SPLIT_INDEX=yes
|
||||
export GIT_TEST_MERGE_ALGORITHM=recursive
|
||||
export GIT_TEST_FULL_IN_PACK_ARRAY=true
|
||||
@ -33,23 +30,25 @@ linux-gcc)
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
|
||||
export GIT_TEST_WRITE_REV_INDEX=1
|
||||
export GIT_TEST_CHECKOUT_WORKERS=2
|
||||
make test
|
||||
;;
|
||||
linux-clang)
|
||||
export GIT_TEST_DEFAULT_HASH=sha1
|
||||
make test
|
||||
;;
|
||||
linux-sha256)
|
||||
export GIT_TEST_DEFAULT_HASH=sha256
|
||||
make test
|
||||
;;
|
||||
linux-gcc-4.8|pedantic)
|
||||
pedantic)
|
||||
# Don't run the tests; we only care about whether Git can be
|
||||
# built with GCC 4.8 or with pedantic
|
||||
;;
|
||||
*)
|
||||
make test
|
||||
# built.
|
||||
export DEVOPTS=pedantic
|
||||
export MAKE_TARGETS=all
|
||||
;;
|
||||
esac
|
||||
|
||||
# Any new "test" targets should not go after this "make", but should
|
||||
# adjust $MAKE_TARGETS. Otherwise compilation-only targets above will
|
||||
# start running tests.
|
||||
make $MAKE_TARGETS
|
||||
check_unignored_build_artifacts
|
||||
|
||||
save_good_tree
|
||||
|
@ -15,7 +15,7 @@ then
|
||||
fi
|
||||
|
||||
case "$jobname" in
|
||||
Linux32)
|
||||
linux32)
|
||||
switch_cmd="linux32 --32bit i386"
|
||||
;;
|
||||
linux-musl)
|
||||
@ -47,15 +47,6 @@ else
|
||||
else
|
||||
useradd -u $HOST_UID $CI_USER
|
||||
fi
|
||||
|
||||
# Due to a bug the test suite was run as root in the past, so
|
||||
# a prove state file created back then is only accessible by
|
||||
# root. Now that bug is fixed, the test suite is run as a
|
||||
# regular user, but the prove state file coming from Travis
|
||||
# CI's cache might still be owned by root.
|
||||
# Make sure that this user has rights to any cached files,
|
||||
# including an existing prove state file.
|
||||
test -n "$cache_dir" && chown -R $HOST_UID:$HOST_UID "$cache_dir"
|
||||
fi
|
||||
|
||||
# Build and test
|
||||
|
@ -6,7 +6,7 @@
|
||||
. ${0%/*}/lib.sh
|
||||
|
||||
case "$jobname" in
|
||||
Linux32)
|
||||
linux32)
|
||||
CI_CONTAINER="daald/ubuntu32:xenial"
|
||||
;;
|
||||
linux-musl)
|
||||
@ -25,7 +25,7 @@ docker pull "$CI_CONTAINER"
|
||||
# root@container:/# export jobname=<jobname>
|
||||
# root@container:/# /usr/src/git/ci/run-docker-build.sh <host-user-id>
|
||||
|
||||
container_cache_dir=/tmp/travis-cache
|
||||
container_cache_dir=/tmp/container-cache
|
||||
|
||||
docker run \
|
||||
--interactive \
|
||||
|
Loading…
Reference in New Issue
Block a user