diff --git a/bob/devtools/data/conda_build_config.yaml b/bob/devtools/data/conda_build_config.yaml
index 270a4ab11972799bff7f0a70b403b97c2817076c..bae9bad0f5d403a17463ee74f6db3c63b81b57c1 100644
--- a/bob/devtools/data/conda_build_config.yaml
+++ b/bob/devtools/data/conda_build_config.yaml
@@ -128,6 +128,7 @@ channel_sources:
 python:
   # part of a zip_keys: python, python_impl, numpy
   - 3.8.* *_cpython
+  - 3.9.* *_cpython
 python_impl:
   # part of a zip_keys: python, python_impl, numpy
   - cpython
diff --git a/bob/devtools/data/gitlab-ci/beat-docker-package.yaml b/bob/devtools/data/gitlab-ci/beat-docker-package.yaml
index f25e131532f8d278b9883612748b0764284747a7..0c0757b8e1ee0bde97ddb21b8cac5972a55b5818 100644
--- a/bob/devtools/data/gitlab-ci/beat-docker-package.yaml
+++ b/bob/devtools/data/gitlab-ci/beat-docker-package.yaml
@@ -2,3 +2,8 @@ build_linux_38:
   tags:
     - bob
     - docker-build
+
+build_linux_39:
+  tags:
+    - bob
+    - docker-build
diff --git a/bob/devtools/data/gitlab-ci/docs.yaml b/bob/devtools/data/gitlab-ci/docs.yaml
index b1929015942b9f22c007209705774d8d5cbb4e5f..c0fd510c0fda8cbb90eb9452d3e523b3c006183d 100644
--- a/bob/devtools/data/gitlab-ci/docs.yaml
+++ b/bob/devtools/data/gitlab-ci/docs.yaml
@@ -39,7 +39,7 @@ build:
   stage: build
   variables:
     GITLAB_CHECKOUT_STRATEGY: "https://gitlab-ci-token:${CI_BUILD_TOKEN}@gitlab.idiap.ch/"
-    PYTHON_VERSION: "3.8"
+    PYTHON_VERSION: "3.9"
     BUILD_EGG: "true"
   script:
     - bdt ci docs -vv packages.txt
diff --git a/bob/devtools/data/gitlab-ci/nightlies.yaml b/bob/devtools/data/gitlab-ci/nightlies.yaml
index f9a072a86b74ed371efcd36dd3d37d875d810468..13a10e06eb7c4a97d2a88a9541da19d906092ddd 100644
--- a/bob/devtools/data/gitlab-ci/nightlies.yaml
+++ b/bob/devtools/data/gitlab-ci/nightlies.yaml
@@ -53,6 +53,13 @@ build_linux_38:
   cache:
     key: 'build-py38'
 
+build_linux_39:
+  extends: .build_linux_template
+  variables:
+    PYTHON_VERSION: "3.9"
+  cache:
+    key: 'build-py39'
+
 build_macos_intel_38:
   extends: .build_template
   variables:
@@ -64,6 +71,17 @@ build_macos_intel_38:
   cache:
     key: 'build-py38'
 
+build_macos_intel_39:
+  extends: .build_template
+  variables:
+    PYTHON_VERSION: "3.9"
+  tags:
+    - bob
+    - macos
+    - intel
+  cache:
+    key: 'build-py39'
+
 
 # Periodic cleanup of beta packages
 .cleanup_template:
diff --git a/bob/devtools/data/gitlab-ci/noarch.yaml b/bob/devtools/data/gitlab-ci/noarch.yaml
index 1b45959efc7cdc12ba3a14a050e411255d28f386..7a54afc842e90fa82844e6072233aee31e333e16 100644
--- a/bob/devtools/data/gitlab-ci/noarch.yaml
+++ b/bob/devtools/data/gitlab-ci/noarch.yaml
@@ -55,7 +55,7 @@ build_linux:
     - docker
   image: quay.io/condaforge/linux-anvil-cos7-x86_64
   variables:
-    PYTHON_VERSION: "3.8"
+    PYTHON_VERSION: "3.9"
     BUILD_EGG: "true"
   script:
     - bdt ci build -vv
@@ -73,7 +73,7 @@ build_linux:
 
 build_macos_intel:
   variables:
-    PYTHON_VERSION: "3.8"
+    PYTHON_VERSION: "3.9"
   cache:
     key: "build"
   extends: .build_template
diff --git a/bob/devtools/data/gitlab-ci/single-package.yaml b/bob/devtools/data/gitlab-ci/single-package.yaml
index 8bb8bba97d9445acf3f5e6fcb4770b455d7d4e35..107849e24fbc164c34d129645a14ac349f0c77f7 100644
--- a/bob/devtools/data/gitlab-ci/single-package.yaml
+++ b/bob/devtools/data/gitlab-ci/single-package.yaml
@@ -79,10 +79,24 @@ build_macos_intel_38:
   cache:
     key: "build-py38"
 
+build_macos_intel_39:
+  extends: .build_macos_intel_template
+  variables:
+    PYTHON_VERSION: "3.9"
+  cache:
+    key: "build-py39"
+
 build_linux_38:
   extends: .build_linux_template
   variables:
     PYTHON_VERSION: "3.8"
+  cache:
+    key: "build-py38"
+
+build_linux_39:
+  extends: .build_linux_template
+  variables:
+    PYTHON_VERSION: "3.9"
     BUILD_EGG: "true"
   script:
     - bdt ci build -vv
@@ -95,7 +109,7 @@ build_linux_38:
       - ${CONDA_ROOT}/conda-bld/linux-64/*.conda
       - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
   cache:
-    key: "build-py38"
+    key: "build-py39"
 
 
 # Test targets (not normally used)
@@ -136,7 +150,9 @@ build_linux_38:
     - bdt ci clean -vv
   dependencies:
     - build_linux_38
+    - build_linux_39
     - build_macos_intel_38
+    - build_macos_intel_39
   tags:
     - bob
     - docker
@@ -176,7 +192,9 @@ pypi:
     - bdt ci clean -vv
   dependencies:
     - build_linux_38
+    - build_linux_39
     - build_macos_intel_38
+    - build_macos_intel_39
   tags:
     - bob
     - docker