029aeeed55
Most Git developers work on Linux and they have no way to know if their changes would break the Git for Windows build. Let's fix that by adding a job to TravisCI that builds and tests Git on Windows. Unfortunately, TravisCI does not support Windows. Therefore, we did the following: * Johannes Schindelin set up a Visual Studio Team Services build sponsored by Microsoft and made it accessible via an Azure Function that speaks a super-simple API. We made TravisCI use this API to trigger a build, wait until its completion, and print the build and test results. * A Windows build and test run takes up to 3h and TravisCI has a timeout after 50min for Open Source projects. Since the TravisCI job does not use heavy CPU/memory/etc. resources, the friendly TravisCI folks extended the job timeout for git/git to 3h. Things, that would need to be done: * Someone with write access to https://travis-ci.org/git/git would need to add the secret token as "GFW_CI_TOKEN" variable in the TravisCI repository setting [1]. Afterwards the build should just work. Things, that might need to be done: * The Windows box can only process a single build at a time. A second Windows build would need to wait until the first finishes. This waiting time and the build time after the wait could exceed the 3h threshold. If this is a problem, then it is likely to happen every day as usually multiple branches are pushed at the same time (pu/next/ master/maint). I cannot test this as my TravisCI account has the 50min timeout. One solution could be to limit the number of concurrent TravisCI jobs [2]. [1] https://docs.travis-ci.com/user/environment-variables#Defining-Variables-in-Repository-Settings [2] https://docs.travis-ci.com/user/customizing-the-build#Limiting-Concurrent-Builds Signed-off-by: Lars Schneider <larsxschneider@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
148 lines
4.1 KiB
YAML
148 lines
4.1 KiB
YAML
language: c
|
|
|
|
sudo: false
|
|
|
|
cache:
|
|
directories:
|
|
- $HOME/travis-cache
|
|
|
|
os:
|
|
- linux
|
|
- osx
|
|
|
|
compiler:
|
|
- clang
|
|
- gcc
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- language-pack-is
|
|
- git-svn
|
|
- apache2
|
|
|
|
env:
|
|
global:
|
|
- DEVELOPER=1
|
|
# The Linux build installs the defined dependency versions below.
|
|
# The OS X build installs the latest available versions. Keep that
|
|
# in mind when you encounter a broken OS X build!
|
|
- LINUX_P4_VERSION="16.2"
|
|
- LINUX_GIT_LFS_VERSION="1.5.2"
|
|
- DEFAULT_TEST_TARGET=prove
|
|
- GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
|
|
- GIT_TEST_OPTS="--verbose-log"
|
|
- GIT_TEST_CLONE_2GB=YesPlease
|
|
# t9810 occasionally fails on Travis CI OS X
|
|
# t9816 occasionally fails with "TAP out of sequence errors" on Travis CI OS X
|
|
- GIT_SKIP_TESTS="t9810 t9816"
|
|
|
|
matrix:
|
|
include:
|
|
- env: Windows
|
|
os: linux
|
|
compiler:
|
|
addons:
|
|
before_install:
|
|
before_script:
|
|
script:
|
|
- >
|
|
test "$TRAVIS_REPO_SLUG" != "git/git" ||
|
|
ci/run-windows-build.sh $TRAVIS_BRANCH $(git rev-parse HEAD)
|
|
after_failure:
|
|
- env: Linux32
|
|
os: linux
|
|
services:
|
|
- docker
|
|
before_install:
|
|
- docker pull daald/ubuntu32:xenial
|
|
before_script:
|
|
script:
|
|
- >
|
|
docker run
|
|
--interactive
|
|
--env DEFAULT_TEST_TARGET
|
|
--env GIT_PROVE_OPTS
|
|
--env GIT_TEST_OPTS
|
|
--env GIT_TEST_CLONE_2GB
|
|
--volume "${PWD}:/usr/src/git"
|
|
daald/ubuntu32:xenial
|
|
/usr/src/git/ci/run-linux32-build.sh $(id -u $USER)
|
|
# Use the following command to debug the docker build locally:
|
|
# $ docker run -itv "${PWD}:/usr/src/git" --entrypoint /bin/bash daald/ubuntu32:xenial
|
|
# root@container:/# /usr/src/git/ci/run-linux32-build.sh
|
|
- env: Documentation
|
|
os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- asciidoc
|
|
- xmlto
|
|
before_install:
|
|
before_script:
|
|
script: ci/test-documentation.sh
|
|
after_failure:
|
|
|
|
before_install:
|
|
- >
|
|
case "${TRAVIS_OS_NAME:-linux}" in
|
|
linux)
|
|
export GIT_TEST_HTTPD=YesPlease
|
|
|
|
mkdir --parents custom/p4
|
|
pushd custom/p4
|
|
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4d
|
|
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4
|
|
chmod u+x p4d
|
|
chmod u+x p4
|
|
export PATH="$(pwd):$PATH"
|
|
popd
|
|
mkdir --parents custom/git-lfs
|
|
pushd custom/git-lfs
|
|
wget --quiet https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz
|
|
tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
|
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
|
|
export PATH="$(pwd):$PATH"
|
|
popd
|
|
;;
|
|
osx)
|
|
brew update --quiet
|
|
# Uncomment this if you want to run perf tests:
|
|
# brew install gnu-time
|
|
brew install git-lfs gettext
|
|
brew link --force gettext
|
|
brew install caskroom/cask/perforce
|
|
;;
|
|
esac;
|
|
echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)";
|
|
p4d -V | grep Rev.;
|
|
echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)";
|
|
p4 -V | grep Rev.;
|
|
echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)";
|
|
git-lfs version;
|
|
mkdir -p $HOME/travis-cache;
|
|
ln -s $HOME/travis-cache/.prove t/.prove;
|
|
|
|
before_script: make --jobs=2
|
|
|
|
script: make --quiet test
|
|
|
|
after_failure:
|
|
- >
|
|
: '<-- Click here to see detailed test output! ';
|
|
for TEST_EXIT in t/test-results/*.exit;
|
|
do
|
|
if [ "$(cat "$TEST_EXIT")" != "0" ];
|
|
then
|
|
TEST_OUT="${TEST_EXIT%exit}out";
|
|
echo "------------------------------------------------------------------------";
|
|
echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)";
|
|
echo "------------------------------------------------------------------------";
|
|
cat "${TEST_OUT}";
|
|
fi;
|
|
done;
|
|
|
|
notifications:
|
|
email: false
|