diff --git a/.github/actions/environment/action.yml b/.github/actions/environment/action.yml
index 5aa9ff6605abbecfd5c97de4735d2e4aa109318f..03d1f6c1efe6727336ff7c75bfa9c548590a7d50 100644
--- a/.github/actions/environment/action.yml
+++ b/.github/actions/environment/action.yml
@@ -4,6 +4,7 @@ runs:
   using: "composite"
   steps:
     - run: |
+        echo VARDIR=/tmp/tnt | tee -a $GITHUB_ENV
         echo REPLICATION_SYNC_TIMEOUT=300 | tee -a $GITHUB_ENV
         echo TEST_TIMEOUT=310 | tee -a $GITHUB_ENV
         echo NO_OUTPUT_TIMEOUT=320 | tee -a $GITHUB_ENV
diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
index b3f6a9aa5fc73105470b119a26aa19eb8b7fb692..038a52955c8ba871f6e2965c34c68fd4c8a19304 100644
--- a/.github/workflows/coverity.yml
+++ b/.github/workflows/coverity.yml
@@ -58,7 +58,7 @@ jobs:
         with:
           name: debug
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
       # Find the PR associated with this push, if there is one.
       - uses: jwalton/gh-find-current-pr@v1
         if: success()
diff --git a/.github/workflows/debug_coverage.yml b/.github/workflows/debug_coverage.yml
index 3a5d3b606d29dfb83038f8f388d66cae2cba1c90..f9510cba29a2429132ab5cc9f7e9173631338d81 100644
--- a/.github/workflows/debug_coverage.yml
+++ b/.github/workflows/debug_coverage.yml
@@ -86,5 +86,5 @@ jobs:
           name: debug
           retention-days: 21
           path: |
-            test/var/artifacts
+            ${{ env.VARDIR }}/artifacts
             *.info
diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml
index 59666e8c57cff196b6c4aa92c4dea8617287a919..78f10f02c93eb6515d92d2ff0e0350e73155670b 100644
--- a/.github/workflows/freebsd.yml
+++ b/.github/workflows/freebsd.yml
@@ -48,4 +48,4 @@ jobs:
         with:
           name: freebsd
           retention-days: 21
-          path: test/var/artifacts
+          path: ./artifacts
diff --git a/.github/workflows/osx_10_15.yml b/.github/workflows/osx_10_15.yml
index c68f00ccbf9806343a147d95ec3f4d35a20e4bb3..07ee59fcce2f3e0a57a0e0a48f5c8869bc71b354 100644
--- a/.github/workflows/osx_10_15.yml
+++ b/.github/workflows/osx_10_15.yml
@@ -46,4 +46,4 @@ jobs:
         with:
           name: osx_10_15
           retention-days: 21
-          path: /tmp/tnt/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/osx_10_15_lto.yml b/.github/workflows/osx_10_15_lto.yml
index c2e833a89aa77abff2f100963e4833132434af72..e9184855a7c606d7021a6f2d5cf15c15bc48dd8a 100644
--- a/.github/workflows/osx_10_15_lto.yml
+++ b/.github/workflows/osx_10_15_lto.yml
@@ -46,4 +46,4 @@ jobs:
         with:
           name: osx_10_15_lto
           retention-days: 21
-          path: /tmp/tnt/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/osx_11_0.yml b/.github/workflows/osx_11_0.yml
index 32397f66942b848e3f34ab0f0c85b9da3d8962c5..9c9acd1363492e32a858cb6cdfa4f9e0499ac180 100644
--- a/.github/workflows/osx_11_0.yml
+++ b/.github/workflows/osx_11_0.yml
@@ -46,4 +46,4 @@ jobs:
         with:
           name: osx_11_0
           retention-days: 21
-          path: /tmp/tnt/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b35c748a2f64cfb46d52051e428cd93bf724e859..a8f60f11d8c67638e33986821f329eef0af3e9a7 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -49,4 +49,4 @@ jobs:
         with:
           name: release
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/release_asan_clang11.yml b/.github/workflows/release_asan_clang11.yml
index d8df848e2e97514301d36f9090db2129924a7e13..eb42b4417fed90ccf75d7ef69b3d6adea0c99d28 100644
--- a/.github/workflows/release_asan_clang11.yml
+++ b/.github/workflows/release_asan_clang11.yml
@@ -49,4 +49,4 @@ jobs:
         with:
           name: release_asan_clang11
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/release_clang.yml b/.github/workflows/release_clang.yml
index b7aa9b731abf4f3cecc0b5c527dbda4647f1b2d8..d2a225fc33d001f848810fee789d6526117dcdc9 100644
--- a/.github/workflows/release_clang.yml
+++ b/.github/workflows/release_clang.yml
@@ -52,4 +52,4 @@ jobs:
         with:
           name: release_clang
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/release_lto.yml b/.github/workflows/release_lto.yml
index e686db109e82ae17068ebc768a7cd9809f7760c1..48d946ca537f08b8e833ff254c2cee9966221542 100644
--- a/.github/workflows/release_lto.yml
+++ b/.github/workflows/release_lto.yml
@@ -51,4 +51,4 @@ jobs:
         with:
           name: release_lto
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/release_lto_clang11.yml b/.github/workflows/release_lto_clang11.yml
index b1295ec60035af78a33c8e894a1641452b75e6b1..1dea524907c220e114c5aab96f0413f9aa503fdb 100644
--- a/.github/workflows/release_lto_clang11.yml
+++ b/.github/workflows/release_lto_clang11.yml
@@ -53,4 +53,4 @@ jobs:
         with:
           name: release_lto_clang11
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/static_build.yml b/.github/workflows/static_build.yml
index cb9efca2c3ce8c8f67b2bafd038e5e2c58765ac5..adc6f23c330d7393a29b7cdba13648e615ae9b70 100644
--- a/.github/workflows/static_build.yml
+++ b/.github/workflows/static_build.yml
@@ -49,4 +49,4 @@ jobs:
         with:
           name: static_build
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/static_build_cmake_linux.yml b/.github/workflows/static_build_cmake_linux.yml
index 8451cd2e2c2c902bb2950d3c873650195a6d12e6..31c48f32cb14cb62576601ec241a00dd437aa16a 100644
--- a/.github/workflows/static_build_cmake_linux.yml
+++ b/.github/workflows/static_build_cmake_linux.yml
@@ -49,4 +49,4 @@ jobs:
         with:
           name: static_build_cmake_linux
           retention-days: 21
-          path: test/var/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.github/workflows/static_build_cmake_osx_15.yml b/.github/workflows/static_build_cmake_osx_15.yml
index 4e03ade25d2d037140a428ca6b4b94ece39e1977..49dfbefef3411ee5bc6402378c082c052dba093c 100644
--- a/.github/workflows/static_build_cmake_osx_15.yml
+++ b/.github/workflows/static_build_cmake_osx_15.yml
@@ -43,4 +43,4 @@ jobs:
         with:
           name: static_build_cmake_osx_15
           retention-days: 21
-          path: /tmp/tnt/artifacts
+          path: ${{ env.VARDIR }}/artifacts
diff --git a/.gitlab.mk b/.gitlab.mk
index 6b2c10d4f7adc4d520909bb28bc9a9ec033751d3..5068b71f26099d8347c6d8bc70e2a40167bd3e88 100644
--- a/.gitlab.mk
+++ b/.gitlab.mk
@@ -103,7 +103,9 @@ vms_start:
 vms_test_%:
 	tar czf - ../tarantool | ssh ${VMS_USER}@127.0.0.1 -p ${VMS_PORT} tar xzf -
 	ssh ${VMS_USER}@127.0.0.1 -p ${VMS_PORT} "/bin/bash -c \
-		'cd tarantool && ${PRESERVE_ENV} ${TRAVIS_MAKE} $(subst vms_,,$@)'"
+		'cd tarantool && ${PRESERVE_ENV} ${TRAVIS_MAKE} $(subst vms_,,$@)'" || \
+		( scp -r -P ${VMS_PORT} ${VMS_USER}@127.0.0.1:tarantool/test/var/artifacts . \
+		; exit 1 )
 
 vms_shutdown:
 	VBoxManage controlvm ${VMS_NAME} poweroff