From 0748532ab6868088757e19bc2615b2c73d207912 Mon Sep 17 00:00:00 2001
From: Roman Tsisyk <roman@tsisyk.com>
Date: Mon, 27 Feb 2017 09:17:13 +0300
Subject: [PATCH]  Travis CI: update to the latest version of .travis.yml

* Switch to PackPack for packages
* Use `packagecloud` deployment for packages instead of travis.sh script
* Use `script` deployment for sources instead of travis.sh script
* Package all branches, but upload only 1.6/1.7
* Move all Travis CI script into the single Makefile
---
 .travis.mk                  |  43 +++++++++++
 .travis.yml                 | 147 ++++++++++++++++++++----------------
 extra/travis/build_linux.sh |   7 --
 extra/travis/build_osx.sh   |   6 --
 extra/travis/test_linux.sh  |   2 -
 extra/travis/test_osx.sh    |   9 ---
 test.sh                     |   2 -
 7 files changed, 123 insertions(+), 93 deletions(-)
 create mode 100644 .travis.mk
 delete mode 100755 extra/travis/build_linux.sh
 delete mode 100755 extra/travis/build_osx.sh
 delete mode 100755 extra/travis/test_linux.sh
 delete mode 100755 extra/travis/test_osx.sh
 delete mode 100644 test.sh

diff --git a/.travis.mk b/.travis.mk
new file mode 100644
index 0000000000..9a98991120
--- /dev/null
+++ b/.travis.mk
@@ -0,0 +1,43 @@
+#
+# Travis CI rules
+#
+
+all: package
+
+source:
+	git clone https://github.com/packpack/packpack.git packpack
+	TARBALL_COMPRESSOR=gz packpack/packpack tarball
+
+package:
+	git clone https://github.com/packpack/packpack.git packpack
+	./packpack/packpack
+
+test: test_$(TRAVIS_OS_NAME)
+
+deps_linux:
+	sudo apt-get update > /dev/null
+	sudo apt-get -q -y install binutils-dev python-daemon python-yaml
+	sudo pip install six==1.9.0
+	sudo pip install gevent==1.1.2
+
+test_linux: deps_linux
+	cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo
+	make -j8
+	cd test && /usr/bin/python test-run.py
+
+deps_osx:
+	brew install openssl readline --force
+	sudo pip install python-daemon PyYAML
+	sudo pip install six==1.9.0
+	sudo pip install gevent==1.1.2
+
+test_osx: deps_osx
+	cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo
+	# Increase the maximum number of open file descriptors on macOS
+	sudo sysctl -w kern.maxfiles=20480 || :
+	sudo sysctl -w kern.maxfilesperproc=20480 || :
+	sudo launchctl limit maxfiles 20480 || :
+	ulimit -S -n 20480 || :
+	ulimit -n
+	make -j8
+	cd test && python test-run.py unit/ app/ app-tap/ box/ box-tap/
diff --git a/.travis.yml b/.travis.yml
index 4159243f09..de8f9e2ba0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,106 +11,122 @@ compiler:
   - clang
   - gcc
 
+cache:
+    directories:
+      - $HOME/.cache
+
+git:
+    depth: 100500
+
 env:
     global:
-      - ENCRYPTION_LABEL="8f886150b5ec"
-      - SFTP_UPLOAD_SOURCE="True"
       - TARBALL_EXTRA_ARGS="--exclude=doc/www --exclude=doc/sphinx"
+      - PACKAGECLOUD_REPO=1_6
     matrix:
-      - OS=el DIST=6 PACK=rpm
-      - OS=el DIST=7 PACK=rpm
-      - OS=fedora DIST=24 PACK=rpm
-      - OS=fedora DIST=25 PACK=rpm
-      - OS=fedora DIST=rawhide PACK=rpm
-      - OS=ubuntu DIST=trusty PACK=deb
-      - OS=ubuntu DIST=precise PACK=deb
-      - OS=ubuntu DIST=xenial PACK=deb
-      - OS=ubuntu DIST=yakkety PACK=deb
-      - OS=debian DIST=jessie PACK=deb
-      - OS=debian DIST=wheezy PACK=deb
-      - OS=debian DIST=stretch PACK=deb
-      - OS=debian DIST=sid PACK=deb
-      - PACK=none
-      - PACK=source
+      - TARGET=source
+      - TARGET=test
+      - OS=el DIST=6
+      - OS=el DIST=7
+      - OS=fedora DIST=24
+      - OS=fedora DIST=25
+      - OS=ubuntu DIST=precise
+      - OS=ubuntu DIST=trusty
+      - OS=ubuntu DIST=xenial
+      - OS=ubuntu DIST=yakkety
+      - OS=debian DIST=wheezy
+      - OS=debian DIST=jessie
+      - OS=debian DIST=stretch
 
 matrix:
     allow_failures:
-#      - env: PACK=source
-#      - env: OS=el DIST=6 PACK=rpm
-#      - env: OS=el DIST=7 PACK=rpm
-#      - env: OS=fedora DIST=24 PACK=rpm
-#      - env: OS=fedora DIST=25 PACK=rpm
-      - env: OS=fedora DIST=rawhide PACK=rpm
-#      - env: OS=ubuntu DIST=precise PACK=deb
-#      - env: OS=ubuntu DIST=trusty PACK=deb
-#      - env: OS=ubuntu DIST=xenial PACK=deb
-#      - env: OS=ubuntu DIST=yakkety PACK=deb
-#      - env: OS=debian DIST=wheezy PACK=deb
-#      - env: OS=debian DIST=jessie PACK=deb
-#      - env: OS=debian DIST=stretch PACK=deb
-      - env: OS=debian DIST=sid PACK=deb
-
+#      - env: OS=el DIST=6
+#      - env: OS=el DIST=7
+#      - env: OS=fedora DIST=24
+#      - env: OS=fedora DIST=25
+#      - env: OS=ubuntu DIST=precise
+#      - env: OS=ubuntu DIST=trusty
+#      - env: OS=ubuntu DIST=xenial
+#      - env: OS=ubuntu DIST=yakkety
+#      - env: OS=debian DIST=wheezy
+#      - env: OS=debian DIST=jessie
+#      - env: OS=debian DIST=stretch
     exclude:
-      - env: OS=el DIST=6 PACK=rpm
-        compiler: clang
-      - env: OS=el DIST=7 PACK=rpm
-        compiler: clang
-      - env: OS=fedora DIST=24 PACK=rpm
+      - env: OS=el DIST=6
         compiler: clang
-      - env: OS=fedora DIST=25 PACK=rpm
+      - env: OS=el DIST=7
         compiler: clang
-      - env: OS=fedora DIST=rawhide PACK=rpm
+      - env: OS=fedora DIST=24
         compiler: clang
-      - env: OS=ubuntu DIST=precise PACK=deb
+      - env: OS=fedora DIST=25
         compiler: clang
-      - env: OS=ubuntu DIST=trusty PACK=deb
+      - env: OS=ubuntu DIST=precise
         compiler: clang
-      - env: OS=ubuntu DIST=xenial PACK=deb
+      - env: OS=ubuntu DIST=trusty
         compiler: clang
-      - env: OS=ubuntu DIST=yakkety PACK=deb
+      - env: OS=ubuntu DIST=xenial
         compiler: clang
-      - env: OS=debian DIST=wheezy PACK=deb
+      - env: OS=ubuntu DIST=yakkety
         compiler: clang
-      - env: OS=debian DIST=jessie PACK=deb
+      - env: OS=debian DIST=wheezy
         compiler: clang
-      - env: OS=debian DIST=stretch PACK=deb
+      - env: OS=debian DIST=jessie
         compiler: clang
-      - env: OS=debian DIST=sid PACK=deb
+      - env: OS=debian DIST=stretch
         compiler: clang
-      - env: PACK=source
+      - env: TARGET=source
         compiler: clang
-      - env: OS=el DIST=6 PACK=rpm
+      - env: OS=el DIST=6
         os: osx
-      - env: OS=el DIST=7 PACK=rpm
+      - env: OS=el DIST=7
         os: osx
-      - env: OS=fedora DIST=24 PACK=rpm
+      - env: OS=fedora DIST=24
         os: osx
-      - env: OS=fedora DIST=25 PACK=rpm
+      - env: OS=fedora DIST=25
         os: osx
-      - env: OS=fedora DIST=rawhide PACK=rpm
+      - env: OS=ubuntu DIST=precise
         os: osx
-      - env: OS=ubuntu DIST=precise PACK=deb
+      - env: OS=ubuntu DIST=trusty
         os: osx
-      - env: OS=ubuntu DIST=trusty PACK=deb
+      - env: OS=ubuntu DIST=xenial
         os: osx
-      - env: OS=ubuntu DIST=xenial PACK=deb
+      - env: OS=ubuntu DIST=yakkety
         os: osx
-      - env: OS=ubuntu DIST=yakkety PACK=deb
+      - env: OS=debian DIST=wheezy
         os: osx
-      - env: OS=debian DIST=wheezy PACK=deb
+      - env: OS=debian DIST=jessie
         os: osx
-      - env: OS=debian DIST=jessie PACK=deb
+      - env: OS=debian DIST=stretch
         os: osx
-      - env: OS=debian DIST=stretch PACK=deb
-        os: osx
-      - env: OS=debian DIST=sid PACK=deb
+      - env: TARGET=source
         os: osx
       - os: osx
         compiler: gcc
 
 script:
-  - git clone https://github.com/tarantool/build.git
-  - ./build/pack/travis.sh
+  - make -f .travis.mk ${TARGET}
+
+before_deploy:
+  - ls -l build/
+
+deploy:
+  # Deploy packages to PackageCloud
+  - provider: packagecloud
+    username: "${PACKAGECLOUD_USER}"
+    repository: "${PACKAGECLOUD_REPO}"
+    token: "${PACKAGECLOUD_TOKEN}"
+    dist: "${OS}/${DIST}"
+    package_glob: build/*.{rpm,deb,dsc}
+    skip_cleanup: true
+    on:
+      branch: "1.6"
+      condition: -n "${OS}" && -n "${DIST}" && -n "${PACKAGECLOUD_TOKEN}"
+  # Deploy sources to SFTP
+  - provider: script
+    script: ./packpack/tools/sftp ${TRAVIS_BRANCH}/src build/*.tar.gz
+    skip_cleanup: true
+    on:
+      branch: "1.6"
+      condition: "x${TARGET} = xsource"
 
 notifications:
   email:
@@ -118,6 +134,3 @@ notifications:
       - build@tarantool.org
     on_success: change
     on_failure: always
-
-git:
-  depth: 500
diff --git a/extra/travis/build_linux.sh b/extra/travis/build_linux.sh
deleted file mode 100755
index 99b3660ef4..0000000000
--- a/extra/travis/build_linux.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-sudo apt-get update > /dev/null
-sudo apt-get -q -y install binutils-dev python-daemon python-yaml
-sudo apt-get -q -y install libmysqlclient-dev libpq-dev postgresql-server-dev-all
-sudo pip install six==1.9.0
-sudo pip install gevent==1.1.2
-cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo
-make -j8
diff --git a/extra/travis/build_osx.sh b/extra/travis/build_osx.sh
deleted file mode 100755
index b6cc6cbdf0..0000000000
--- a/extra/travis/build_osx.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-brew install openssl readline --force
-sudo pip install python-daemon PyYAML
-sudo pip install six==1.9.0
-sudo pip install gevent==1.1.2
-cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo
-make -j8
diff --git a/extra/travis/test_linux.sh b/extra/travis/test_linux.sh
deleted file mode 100755
index 1303e1f7b3..0000000000
--- a/extra/travis/test_linux.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-cd test
-/usr/bin/python test-run.py --force
diff --git a/extra/travis/test_osx.sh b/extra/travis/test_osx.sh
deleted file mode 100755
index 3603c0d29c..0000000000
--- a/extra/travis/test_osx.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-echo "Increase the maximum number of open file descriptors on macOS"
-NOFILE=20480
-sudo sysctl -w kern.maxfiles=$NOFILE
-sudo sysctl -w kern.maxfilesperproc=$NOFILE
-sudo launchctl limit maxfiles $NOFILE $NOFILE
-ulimit -S -n $NOFILE
-ulimit -n
-
-cd test && python test-run.py
diff --git a/test.sh b/test.sh
deleted file mode 100644
index cc1e827fb5..0000000000
--- a/test.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-bash ./extra/travis/build_$TRAVIS_OS_NAME.sh
-bash ./extra/travis/test_$TRAVIS_OS_NAME.sh
-- 
GitLab