diff --git a/tests/run.yml b/tests/run.yml
index e9bdfece585a43046714a187e902451973c41a1e..72c0b3a49fa924be12d2d666389bd7fa3e5e9094 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -269,6 +269,7 @@
         TAG: "{{ build_image_tag }}"
         KOLLA_SRC_DIR: "{{ ansible_env.HOME }}/src/opendev.org/openstack/kolla"
         SCENARIO: "{{ scenario }}"
+        UPPER_CONSTRAINTS: "{{ ansible_env.HOME }}/src/opendev.org/openstack/requirements/upper-constraints.txt"
 
     - name: Run init-swift.sh script
       script:
diff --git a/tools/setup_gate.sh b/tools/setup_gate.sh
index d30d829eac0f361422a3df549c84cf01cfa10910..c06a0bb88d3053c1e274d4c76fd3b395f2ad73e7 100755
--- a/tools/setup_gate.sh
+++ b/tools/setup_gate.sh
@@ -10,22 +10,22 @@ GIT_PROJECT_DIR=$(mktemp -d)
 
 function setup_openstack_clients {
     # Prepare virtualenv for openstack deployment tests
-    if [[ "debian" == $BASE_DISTRO ]]; then
-        sudo apt -y install python3-venv
-    fi
-    python3 -m venv ~/openstackclient-venv
-    ~/openstackclient-venv/bin/pip install -U pip
-    ~/openstackclient-venv/bin/pip install python-openstackclient
-    ~/openstackclient-venv/bin/pip install python-heatclient
+    local packages=(python-openstackclient python-heatclient)
     if [[ $SCENARIO == zun ]]; then
-        ~/openstackclient-venv/bin/pip install python-zunclient
+        packages+=(python-zunclient)
     fi
     if [[ $SCENARIO == ironic ]]; then
-        ~/openstackclient-venv/bin/pip install python-ironicclient
+        packages+=(python-ironicclient)
     fi
     if [[ $SCENARIO == masakari ]]; then
-        ~/openstackclient-venv/bin/pip install python-masakariclient
+        packages+=(python-masakariclient)
     fi
+    if [[ "debian" == $BASE_DISTRO ]]; then
+        sudo apt -y install python3-venv
+    fi
+    python3 -m venv ~/openstackclient-venv
+    ~/openstackclient-venv/bin/pip install -U pip
+    ~/openstackclient-venv/bin/pip install -c $UPPER_CONSTRAINTS ${packages[@]}
 }
 
 function setup_config {
diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml
index dc30e6ac44ed03d616d65b201fc96624268e9073..dd66b91fff0e957002ea3ff0288ee4aeb8f7d7a2 100644
--- a/zuul.d/base.yaml
+++ b/zuul.d/base.yaml
@@ -8,6 +8,7 @@
     timeout: 7200
     required-projects:
       - openstack/kolla-ansible
+      - openstack/requirements
     irrelevant-files:
       - ^.*\.rst$
       - ^doc/.*