Migrate Linux Travis-CI jobs to docker containers

This commit is contained in:
Michał Janiszewski 2016-12-15 17:55:17 +01:00 committed by Ted John
parent 6588a03d73
commit 2e674b9202
4 changed files with 40 additions and 28 deletions

View File

@ -13,8 +13,10 @@ env:
matrix:
include:
- os: linux
services:
- docker
env:
- OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=gcc-4.8 -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=OpenRCT2" OPENRCT2_MAKE_OPTS="-j2" TARGET=linux64
- OPENRCT2_CMAKE_OPTS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=OpenRCT2" OPENRCT2_MAKE_OPTS="-j2" TARGET=ubuntu_amd64
- secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ="
after_success:
- cd build
@ -27,8 +29,10 @@ matrix:
else curl --progress-bar --upload-file openrct2-linux.tar.gz https://transfer.sh/openrct2-linux-x86_64.tar.gz -o link && cat link;
fi
- os: linux
services:
- docker
env:
- OPENRCT2_CMAKE_OPTS="-DFORCE32=ON -DDISABLE_RCT2=OFF -DCMAKE_INSTALL_PREFIX=OpenRCT2" TARGET=linux
- OPENRCT2_CMAKE_OPTS="-DFORCE32=ON -DDISABLE_RCT2=OFF -DCMAKE_INSTALL_PREFIX=OpenRCT2" TARGET=ubuntu_i686
- secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ="
after_success:
- cd build
@ -41,7 +45,7 @@ matrix:
else curl --progress-bar --upload-file openrct2-linux.tar.gz https://transfer.sh/openrct2-linux-i686.tar.gz -o link && cat link;
fi
- os: linux
env: OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" TARGET=linux64
env: OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" TARGET=ubuntu_amd64
- os: linux
env: OPENRCT2_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DFORCE32=on" TARGET=windows
- os: linux

View File

@ -20,7 +20,7 @@ if [[ ! -d build ]]; then
mkdir -p build
fi
if [[ $TARGET != "linux" && $TARGET != "docker32" && $SYSTEM != "Darwin" ]]; then
if [[ $TARGET != "ubuntu_i686" && $TARGET != "docker32" && $SYSTEM != "Darwin" ]]; then
sha256sum=f124c954bbd0b58c93e5fba46902806bd3637d3a1c5fb8e4b67441052f182df2
libVFile="./libversion"
libdir="./lib"
@ -76,17 +76,30 @@ pushd build
chmod g+s $(pwd)
# CMAKE and MAKE opts from environment
docker run -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:64bit-only bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\""
elif [[ $TARGET == "linux" ]]
elif [[ $TARGET == "ubuntu_i686" ]]
then
cmake $OPENRCT2_CMAKE_OPTS .. -DCMAKE_BUILD_TYPE=debug
# NOT the same variable as above
# this target also includes building & running of testpaint
make $OPENRCT2_MAKE_OPTS testpaint
./testpaint --quiet || if [[ $? -eq 1 ]] ; then echo Allowing failed tests to pass ; else false; fi
PARENT=$(readlink -f ../)
chmod a+rwx $(pwd)
chmod g+s $(pwd)
# CMAKE and MAKE opts from environment
docker run -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:ubuntu_i686 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make all testpaint install $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\" && ( ./testpaint --quiet || if [[ \$? -eq 1 ]] ; then echo Allowing failed tests to pass ; else echo here ; false; fi )"
elif [[ $TARGET == "ubuntu_amd64" ]]
then
PARENT=$(readlink -f ../)
chmod a+rwx $(pwd)
chmod g+s $(pwd)
# CMAKE and MAKE opts from environment
docker run -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:ubuntu_amd64 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\""
elif [[ $TARGET == "windows" ]]
then
PARENT=$(readlink -f ../)
chmod a+rwx $(pwd)
chmod g+s $(pwd)
# CMAKE and MAKE opts from environment
docker run -v /usr/local/cross-tools/:/usr/local/cross-tools/ -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:mingw bash -c "cmake ../ $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS"
else
cmake $OPENRCT2_CMAKE_OPTS ..
# NOT the same variable as above
make $OPENRCT2_MAKE_OPTS
echo "Unkown target $TARGET"
exit 1
fi
popd
@ -100,7 +113,7 @@ if [[ ! -h build/data ]]; then
ln -s ../data build/data
fi
if [[ $TARGET == "linux" ]] || [[ $TARGET == "docker32" ]]; then
if [[ $TARGET == "ubuntu_i686" ]] || [[ $TARGET == "docker32" ]]; then
if [[ ! -h openrct2 ]]; then
ln -s build/openrct2 openrct2
fi

View File

@ -18,8 +18,8 @@ else
fi
mkdir -p "$cachedir"
# Sets default target to "linux", if none specified
TARGET=${TARGET-linux}
# Sets default target to "ubuntu_amd64", if none specified
TARGET=${TARGET-ubuntu_amd64}
# keep in sync with version in build.sh
libversion=3
libVFile="./libversion"
@ -170,20 +170,14 @@ elif [[ $(uname) == "Linux" ]]; then
else
# prevent build.sh from re-doing all the steps again
case "$TARGET" in
"linux")
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install --no-install-recommends -y --force-yes cmake libsdl2-dev:i386 libsdl2-ttf-dev:i386 gcc-4.8 pkg-config:i386 g++-4.8-multilib gcc-4.8-multilib libjansson-dev:i386 libspeex-dev:i386 libspeexdsp-dev:i386 libcurl4-openssl-dev:i386 libcrypto++-dev:i386 clang libfontconfig1-dev:i386 libfreetype6-dev:i386 libpng-dev:i386
sudo apt-get install -f
"ubuntu_i686")
docker pull openrct2/openrct2:ubuntu_i686
;;
"linux64")
sudo apt-get update
sudo apt-get install --no-install-recommends -y --force-yes cmake libsdl2-dev libsdl2-ttf-dev gcc-4.8 pkg-config g++ gcc libjansson-dev libspeex-dev libspeexdsp-dev libcurl4-openssl-dev libcrypto++-dev libfontconfig1-dev libfreetype6-dev libpng-dev
sudo apt-get install -f
"ubuntu_amd64")
docker pull openrct2/openrct2:ubuntu_amd64
;;
"windows")
sudo apt-get update
sudo apt-get install -y --force-yes binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686 cmake
docker pull openrct2/openrct2:mingw
;;
"docker32")
docker pull openrct2/openrct2:32bit-only

View File

@ -22,6 +22,7 @@ ExternalProject_Add(
DEPENDS googletest-distribution
DOWNLOAD_COMMAND ""
SOURCE_DIR "${GOOGLETEST_DISTRIB_SOURCE_DIR}/googletest"
CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${TARGET_M}"
# Disable install step
INSTALL_COMMAND ""
# Wrap download, configure and build steps in a script to log output
@ -76,4 +77,4 @@ set(LANGUAGEPACK_TEST_SOURCES
)
add_executable(test_languagepack ${LANGUAGEPACK_TEST_SOURCES})
target_link_libraries(test_languagepack ${GTEST_LIBRARIES} dl z SDL2 SDL2_ttf ssl crypto)
add_test(NAME languagepack COMMAND test_languagepack)
add_test(NAME languagepack COMMAND test_languagepack)