diff --git a/.travis.yml b/.travis.yml
index 504f1351268dfbb811c78181622dacb61de2983e..7eee97935e3b4041958ca7d3b95f423321a9d2c6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,8 @@
-language: cpp
+sudo: required
+services:
+  - docker
 
+language: cpp
 os:
   - linux
   - osx
@@ -8,26 +11,92 @@ compiler:
   - clang
   - gcc
 
-matrix:
-  exclude:
-    - os: osx
-      compiler: gcc
-
-addons:
-  postgresql: "9.1"
-
-before_install:
-  - git submodule update --init --recursive
+env:
+    matrix:
+      - OS=el DIST=6 PACK=rpm
+      - OS=el DIST=7 PACK=rpm
+      - OS=fedora DIST=20 PACK=rpm
+      - OS=fedora DIST=21 PACK=rpm
+      - OS=fedora DIST=22 PACK=rpm
+      - OS=fedora DIST=23 PACK=rpm
+      - OS=ubuntu DIST=trusty PACK=deb
+      - OS=ubuntu DIST=precise PACK=deb
+      - OS=ubuntu DIST=vivid PACK=deb
+      - OS=debian DIST=jessie PACK=deb
+      - OS=debian DIST=wheezy PACK=deb
+      - OS=debian DIST=stretch PACK=deb
+      - PACK=none
 
-before_script:
-  - export PG='127.0.0.1:5432:tarantool:tarantool:tarantool'
-  - export MYSQL='127.0.0.1:3306:tarantool:tarantool:tarantool'
+matrix:
+    allow_failures:
+      - env: OS=el DIST=6 PACK=rpm
+      - env: OS=el DIST=7 PACK=rpm
+      - env: OS=fedora DIST=20 PACK=rpm
+      - env: OS=fedora DIST=21 PACK=rpm
+      - env: OS=fedora DIST=22 PACK=rpm
+      - env: OS=fedora DIST=23 PACK=rpm
+      - env: OS=ubuntu DIST=trusty PACK=deb
+      - env: OS=ubuntu DIST=precise PACK=deb
+      - env: OS=ubuntu DIST=vivid PACK=deb
+      - env: OS=debian DIST=jessie PACK=deb
+      - env: OS=debian DIST=wheezy PACK=deb
+      - env: OS=debian DIST=stretch PACK=deb
 
-install:
-  - sh ./extra/travis/build_$TRAVIS_OS_NAME.sh
+    exclude:
+      - env: OS=el DIST=6 PACK=rpm
+        compiler: clang
+      - env: OS=el DIST=7 PACK=rpm
+        compiler: clang
+      - env: OS=fedora DIST=20 PACK=rpm
+        compiler: clang
+      - env: OS=fedora DIST=21 PACK=rpm
+        compiler: clang
+      - env: OS=fedora DIST=22 PACK=rpm
+        compiler: clang
+      - env: OS=fedora DIST=23 PACK=rpm
+        compiler: clang
+      - env: OS=ubuntu DIST=trusty PACK=deb
+        compiler: clang
+      - env: OS=ubuntu DIST=precise PACK=deb
+        compiler: clang
+      - env: OS=ubuntu DIST=vivid PACK=deb
+        compiler: clang
+      - env: OS=debian DIST=jessie PACK=deb
+        compiler: clang
+      - env: OS=debian DIST=wheezy PACK=deb
+        compiler: clang
+      - env: OS=debian DIST=stretch PACK=deb
+        compiler: clang
+      - env: OS=el DIST=6 PACK=rpm
+        os: osx
+      - env: OS=el DIST=7 PACK=rpm
+        os: osx
+      - env: OS=fedora DIST=20 PACK=rpm
+        os: osx
+      - env: OS=fedora DIST=21 PACK=rpm
+        os: osx
+      - env: OS=fedora DIST=22 PACK=rpm
+        os: osx
+      - env: OS=fedora DIST=23 PACK=rpm
+        os: osx
+      - env: OS=ubuntu DIST=trusty PACK=deb
+        os: osx
+      - env: OS=ubuntu DIST=precise PACK=deb
+        os: osx
+      - env: OS=ubuntu DIST=vivid PACK=deb
+        os: osx
+      - env: OS=debian DIST=jessie PACK=deb
+        os: osx
+      - env: OS=debian DIST=wheezy PACK=deb
+        os: osx
+      - env: OS=debian DIST=stretch PACK=deb
+        os: osx
+      - os: osx
+        compiler: gcc
 
 script:
-  - sh ./extra/travis/test_$TRAVIS_OS_NAME.sh
+  - git clone https://github.com/tarantool/build.git
+  - bash build/pack/travis.sh
 
 notifications:
   irc:
@@ -35,7 +104,7 @@ notifications:
       - irc.freenode.net#tarantool
     on_success: change
     on_failure: always
-  email: false
+  email: true
 
 git:
   depth: 500
diff --git a/cmake/rpm.cmake b/cmake/rpm.cmake
index d01a879e8a0f194464cab4dfe1141978968d4817..e16526a8f15cc7cf3555d3418799f164c8399f97 100644
--- a/cmake/rpm.cmake
+++ b/cmake/rpm.cmake
@@ -23,21 +23,21 @@ if (RPMBUILD)
 
     set (RPM_SOURCE_DIRECTORY_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME}
         CACHE STRING "" FORCE)
-    set (RPM_PACKAGE_SOURCE_FILE_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
+    set (RPM_PACKAGE_SOURCE_FILE_NAME ${VERSION}.tar.gz
         CACHE STRING "" FORCE)
 
     set (RPM_BUILDROOT "${PROJECT_BINARY_DIR}/RPM/BUILDROOT" CACHE STRING "" FORCE)
 
-    add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
+    add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/${VERSION}.tar.gz
         WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
-        COMMAND $(MAKE) package_source)
+        COMMAND $(MAKE) package_source && mv `ls *.tar.gz | head -n 1` ${VERSION}.tar.gz)
 
     add_custom_command(OUTPUT ${RPM_BUILDROOT}
         COMMAND ${MKDIR} -p ${RPM_BUILDROOT})
 
     add_custom_target(rpm_src
-        DEPENDS ${PROJECT_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
-        COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} --define '_sourcedir ./' --define '_srcrpmdir ./' -bs ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec
+        DEPENDS ${PROJECT_BINARY_DIR}/${VERSION}.tar.gz
+        COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} --define '_sourcedir ./' --define '_srcrpmdir ./' -bs ${PROJECT_SOURCE_DIR}/rpm/tarantool.spec
         WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
         )
 
diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt
index 44d349ac3f80c7ffff30afc25aa0e51957dba9d9..9f293a2942d8dcfe6b60c1a0aafa678e99f4ed26 100644
--- a/extra/CMakeLists.txt
+++ b/extra/CMakeLists.txt
@@ -1,7 +1,5 @@
 add_subdirectory(dist)
 
-configure_file(rpm/tarantool.rpm.spec.in rpm/tarantool.rpm.spec @ONLY)
-
 if (TARGET_OS_DARWIN)
 	# NOTE: need add execution 'plutil -lint org.tarantool.tarantool.plist
 	# to check syntax of plist file.
diff --git a/extra/travis/build_linux.sh b/extra/travis/build_linux.sh
index aa6e01379a3df63f9c08e6ff41b85a1de04e2711..64d251e9c177bde908fd389af6e8051874d60334 100755
--- a/extra/travis/build_linux.sh
+++ b/extra/travis/build_linux.sh
@@ -1,8 +1,8 @@
 sudo apt-get update > /dev/null
-sudo apt-get -q install binutils-dev python-daemon python-yaml
-sudo apt-get -q install libmysqlclient-dev libpq-dev postgresql-server-dev-all
+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
 sudo pip install geventconnpool
-mkdir ./build && cd ./build && cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
+cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo
 make -j8
diff --git a/extra/travis/test_linux.sh b/extra/travis/test_linux.sh
index a46adf39d43621a3f360183547a44e2138040e0a..1303e1f7b385e302d46a96669dd8d7d6c3b8ca5b 100755
--- a/extra/travis/test_linux.sh
+++ b/extra/travis/test_linux.sh
@@ -1 +1,2 @@
-cd ./build && make test || echo
+cd test
+/usr/bin/python test-run.py --force
diff --git a/extra/rpm/tarantool.rpm.spec.in b/rpm/tarantool.spec
similarity index 94%
rename from extra/rpm/tarantool.rpm.spec.in
rename to rpm/tarantool.spec
index 0a056dd9055243f08bd30837bda43156508b73ef..4fe629b93944d81aae3d63b7953f55f356ca6a12 100644
--- a/extra/rpm/tarantool.rpm.spec.in
+++ b/rpm/tarantool.spec
@@ -13,6 +13,10 @@
 %global __debug_install_post %{nil}
 %global __debug_package %{nil}
 
+%global build_version %(git describe --long | sed "s/[0-9]*\.[0-9]*\.[0-9]*-//" | sed "s/-[a-z 0-9]*//")
+%global git_hash %(git describe --long | sed "s/.*-//")
+%global prod_version %(git describe --long | sed "s/-[0-9]*-.*//")
+
 %if (0%{?fedora} >= 15 || 0%{?rhel} >= 7) && %{undefined _with_systemd}
 %global _with_systemd 1
 %endif
@@ -54,8 +58,8 @@ Requires(preun): initscripts
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 Name: %{?scl_prefix}tarantool
-Version: @RPM_PACKAGE_VERSION@
-Release: @RPM_PACKAGE_RELEASE@
+Version: %{prod_version}
+Release: %{build_version}
 Group: Applications/Databases
 Summary: Tarantool - a NoSQL database in a Lua script
 Vendor: tarantool.org
@@ -65,7 +69,7 @@ Provides: %{?scl_prefix}tarantool-debuginfo
 Provides: %{?scl_prefix}tarantool-debug
 Requires: %{?scl_prefix}tarantool-common
 URL: http://tarantool.org
-Source0: @RPM_PACKAGE_SOURCE_FILE_NAME@
+Source0: %{version}.tar.gz
 %description
 Tarantool is a high performance in-memory NoSQL database. It supports
 replication, online backup, stored procedures in Lua.
@@ -78,7 +82,7 @@ scripts.
 Summary: Tarantool C connector and header files
 Vendor: tarantool.org
 Group: Applications/Databases
-Requires: %{?scl_prefix}tarantool = @RPM_PACKAGE_VERSION@-@RPM_PACKAGE_RELEASE@
+Requires: %{?scl_prefix}tarantool = %{version}-%{release}
 %description dev
 Tarantool is a high performance in-memory NoSQL database.
 It supports replication, online backup, stored procedures in Lua.
@@ -103,7 +107,7 @@ This package provides common files
 ##################################################################
 
 %prep
-%setup -n @RPM_SOURCE_DIRECTORY_NAME@
+%setup -q -c tarantool-%{version}
 
 %build
 # https://fedoraproject.org/wiki/Packaging:RPMMacros
diff --git a/test.sh b/test.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cc1e827fb5e80f4c22777b570f2d5514971ada69
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,2 @@
+bash ./extra/travis/build_$TRAVIS_OS_NAME.sh
+bash ./extra/travis/test_$TRAVIS_OS_NAME.sh