diff --git a/bob/devtools/bootstrap.py b/bob/devtools/bootstrap.py
index c53168a884d5073e0b664ddebbeeb24ecc284ec4..faf682c6fd79b600954de1224ed43b4cca454d39 100644
--- a/bob/devtools/bootstrap.py
+++ b/bob/devtools/bootstrap.py
@@ -449,6 +449,13 @@ if __name__ == "__main__":
         default=os.environ.get("CI_COMMIT_TAG", None),
         help="If building a tag, pass it with this flag [default: %(default)s]",
     )
+    parser.add_argument(
+        "-p",
+        "--python",
+        default=os.environ.get("PYTHON_VERSION", None),
+        help="If a specific python version must be used, "
+        "bootstraps a new environment with it [default: %(default)s]",
+    )
     parser.add_argument(
         "--verbose",
         "-v",
@@ -572,12 +579,11 @@ if __name__ == "__main__":
             "--channel=%s" % k for k in channels
         ]
         conda_cmd = "install" if args.envname in ("base", "root") else "create"
-        cmd = (
-            [conda_bin, conda_cmd, "--yes"]
-            + conda_verbosity
-            + channels
-            + ["-n", args.envname, "bob.devtools"]
-        )
+        cmd = [conda_bin, conda_cmd, "--yes"] + conda_verbosity + channels
+        # can only enforce python version on newly created environments
+        if conda_cmd == "create" and args.python is not None:
+            cmd.append(f"python={args.python}")
+        cmd += ["-n", args.envname, "bob.devtools"]
         if conda_cmd == "install":
             cmd += ["--update-specs"]
         run_cmdline(cmd)
diff --git a/bob/devtools/data/gitlab-ci/noarch.yaml b/bob/devtools/data/gitlab-ci/noarch.yaml
index f14614e9c161802784f6f994ea43408a2e828340..7e9071dfb8366acd0b5be854d4d283977033289f 100644
--- a/bob/devtools/data/gitlab-ci/noarch.yaml
+++ b/bob/devtools/data/gitlab-ci/noarch.yaml
@@ -24,9 +24,10 @@ stages:
     - "[ -r /root/.condarc ] && rm -f /root/.condarc"
     - "[ -d /root/.conda ] && rm -rf /root/.conda"
     - curl --silent "${BOOTSTRAP}" --output "bootstrap.py"
-    - python3 bootstrap.py -vv channel base
+    - python3 bootstrap.py -vv channel build
     - source ${CONDA_ROOT}/etc/profile.d/conda.sh
-    - conda activate base
+    - conda activate build
+    - bdt ci check -vv
   cache:
     paths:
       - miniconda.sh
@@ -39,7 +40,6 @@ stages:
   extends: .bootstrap
   stage: build
   script:
-    - bdt ci check -vv
     - bdt ci build -vv
     - bdt ci clean -vv
   artifacts:
@@ -57,7 +57,6 @@ build_linux:
     PYTHON_VERSION: "3.8"
     BUILD_EGG: "true"
   script:
-    - bdt ci check -vv
     - bdt ci build -vv
     - bdt ci readme -vv dist/*.zip
     - bdt ci clean -vv
diff --git a/bob/devtools/data/gitlab-ci/single-package.yaml b/bob/devtools/data/gitlab-ci/single-package.yaml
index fc82d5a295aaee18e70d9227dedb587dd8cb9cb4..5236f864ffc8bb223edfbe48498844a61c959b94 100644
--- a/bob/devtools/data/gitlab-ci/single-package.yaml
+++ b/bob/devtools/data/gitlab-ci/single-package.yaml
@@ -24,9 +24,10 @@ stages:
     - "[ -r /root/.condarc ] && rm -f /root/.condarc"
     - "[ -d /root/.conda ] && rm -rf /root/.conda"
     - curl --silent "${BOOTSTRAP}" --output "bootstrap.py"
-    - python3 bootstrap.py -vv channel base
+    - python3 bootstrap.py -vv channel build
     - source ${CONDA_ROOT}/etc/profile.d/conda.sh
-    - conda activate base
+    - conda activate build
+    - bdt ci check -vv
   cache:
     paths:
       - miniconda.sh
@@ -39,7 +40,6 @@ stages:
   extends: .bootstrap
   stage: build
   script:
-    - bdt ci check -vv
     - bdt ci build -vv
     - bdt ci clean -vv
   artifacts:
@@ -97,7 +97,6 @@ build_linux_38:
     PYTHON_VERSION: "3.8"
     BUILD_EGG: "true"
   script:
-    - bdt ci check -vv
     - bdt ci build -vv
     - bdt ci readme -vv dist/*.zip
     - bdt ci clean -vv