diff --git a/.gitlab-ci/lint.yml b/.gitlab-ci/lint.yml
index 4e319539f..bd9b91ab8 100644
--- a/.gitlab-ci/lint.yml
+++ b/.gitlab-ci/lint.yml
@@ -42,10 +42,14 @@ syntax-check:
 tox-inventory-builder:
   stage: unit-tests
   extends: .job
+  before_script:
+    - ./tests/scripts/rebase.sh
+    - apt-get update && apt-get install -y python3-pip
+    - update-alternatives --install /usr/bin/python python /usr/bin/python3 10
+    - python -m pip install -r tests/requirements.txt
   script:
-    - pip install tox
+    - pip3 install tox
     - cd contrib/inventory_builder && tox
-  when: manual
   except: ['triggers', 'master']
 
 markdownlint:
diff --git a/contrib/inventory_builder/inventory.py b/contrib/inventory_builder/inventory.py
index 50096ee05..7708412ea 100644
--- a/contrib/inventory_builder/inventory.py
+++ b/contrib/inventory_builder/inventory.py
@@ -224,8 +224,8 @@ class KubesprayInventory(object):
                 end = int(ip_address(end_address))
             except Exception:
                 # Python 2.7
-                start = int(ip_address(unicode(start_address)))
-                end = int(ip_address(unicode(end_address)))
+                start = int(ip_address(str(start_address)))
+                end = int(ip_address(str(end_address)))
             return [ip_address(ip).exploded for ip in range(start, end + 1)]
 
         for host in hosts:
diff --git a/contrib/inventory_builder/tests/test_inventory.py b/contrib/inventory_builder/tests/test_inventory.py
index b0e14b809..aa03e7c64 100644
--- a/contrib/inventory_builder/tests/test_inventory.py
+++ b/contrib/inventory_builder/tests/test_inventory.py
@@ -12,6 +12,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import inventory
 import mock
 import unittest
 
@@ -43,8 +44,8 @@ class TestInventory(unittest.TestCase):
 
     def test_get_ip_from_opts_invalid(self):
         optstring = "notanaddr=value something random!chars:D"
-        self.assertRaisesRegexp(ValueError, "IP parameter not found",
-                                self.inv.get_ip_from_opts, optstring)
+        self.assertRaisesRegex(ValueError, "IP parameter not found",
+                               self.inv.get_ip_from_opts, optstring)
 
     def test_ensure_required_groups(self):
         groups = ['group1', 'group2']
@@ -63,8 +64,8 @@ class TestInventory(unittest.TestCase):
     def test_get_host_id_invalid(self):
         bad_hostnames = ['node', 'no99de', '01node', 'node.111111']
         for hostname in bad_hostnames:
-            self.assertRaisesRegexp(ValueError, "Host name must end in an",
-                                    self.inv.get_host_id, hostname)
+            self.assertRaisesRegex(ValueError, "Host name must end in an",
+                                   self.inv.get_host_id, hostname)
 
     def test_build_hostnames_add_one(self):
         changed_hosts = ['10.90.0.2']
@@ -192,8 +193,8 @@ class TestInventory(unittest.TestCase):
             ('node2', {'ansible_host': '10.90.0.3',
                        'ip': '10.90.0.3',
                        'access_ip': '10.90.0.3'})])
-        self.assertRaisesRegexp(ValueError, "Unable to find host",
-                                self.inv.delete_host_by_ip, existing_hosts, ip)
+        self.assertRaisesRegex(ValueError, "Unable to find host",
+                               self.inv.delete_host_by_ip, existing_hosts, ip)
 
     def test_purge_invalid_hosts(self):
         proper_hostnames = ['node1', 'node2']
@@ -309,8 +310,8 @@ class TestInventory(unittest.TestCase):
 
     def test_range2ips_incorrect_range(self):
         host_range = ['10.90.0.4-a.9b.c.e']
-        self.assertRaisesRegexp(Exception, "Range of ip_addresses isn't valid",
-                                self.inv.range2ips, host_range)
+        self.assertRaisesRegex(Exception, "Range of ip_addresses isn't valid",
+                               self.inv.range2ips, host_range)
 
     def test_build_hostnames_different_ips_add_one(self):
         changed_hosts = ['10.90.0.2,192.168.0.2']
diff --git a/contrib/inventory_builder/tox.ini b/contrib/inventory_builder/tox.ini
index ae675f76b..889fe7853 100644
--- a/contrib/inventory_builder/tox.ini
+++ b/contrib/inventory_builder/tox.ini
@@ -1,7 +1,7 @@
 [tox]
 minversion = 1.6
 skipsdist = True
-envlist = pep8, py27
+envlist = pep8, py33
 
 [testenv]
 whitelist_externals = py.test