diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index feb7859f1debc6d8a5739cededdb837e04f45068..b014712210e5846eb01cf65697fcffe506e38077 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -48,6 +48,24 @@ build_linux:
     key: "linux-cache"
 
 
+build_macos_intel:
+  extends: .build_template
+  tags:
+    - macos
+    - intel
+  script:
+    - python3 ./bob/devtools/bootstrap.py -vv build
+    - source ${CONDA_ROOT}/etc/profile.d/conda.sh
+    - conda activate base
+    - python3 ./bob/devtools/build.py -vv
+  artifacts:
+    paths:
+      - ${CONDA_ROOT}/conda-bld/osx-64/*.conda
+      - ${CONDA_ROOT}/conda-bld/osx-64/*.tar.bz2
+  cache:
+    key: "macos-intel-cache"
+
+
 # Deploy targets
 .deploy_template:
   stage: deploy
@@ -63,6 +81,7 @@ build_linux:
     - bdt ci clean -vv
   dependencies:
     - build_linux
+    - build_macos_intel
   tags:
     - docker
   cache:
@@ -104,6 +123,7 @@ pypi:
     - bdt ci clean -vv
   dependencies:
     - build_linux
+    - build_macos_intel
   tags:
     - docker
   cache:
diff --git a/bob/devtools/data/gitlab-ci/base-build.yaml b/bob/devtools/data/gitlab-ci/base-build.yaml
index 31612f784814e934bc2723d51a8f6329d1de7bba..5da2248cd628ab87ba160dd6907e82b68baccef9 100644
--- a/bob/devtools/data/gitlab-ci/base-build.yaml
+++ b/bob/devtools/data/gitlab-ci/base-build.yaml
@@ -38,3 +38,12 @@ build_linux:
   image: docker.idiap.ch/bob/docker-images/c3i-linux-64
   cache:
     key: "linux-cache"
+
+
+build_macos_intel:
+  extends: .build_template
+  tags:
+    - macos
+    - intel
+  cache:
+    key: "macos-intel-cache"
diff --git a/bob/devtools/data/gitlab-ci/nightlies.yaml b/bob/devtools/data/gitlab-ci/nightlies.yaml
index 5faac583789beeb3123f7c60245807cee0e227a5..2b2ab48af485901dd308c3f2a49730c0d9832e77 100644
--- a/bob/devtools/data/gitlab-ci/nightlies.yaml
+++ b/bob/devtools/data/gitlab-ci/nightlies.yaml
@@ -57,6 +57,26 @@ build_linux_38:
   cache:
     key: 'build-py38'
 
+build_macos_intel_37:
+  extends: .build_template
+  variables:
+    PYTHON_VERSION: "3.7"
+  tags:
+    - macos
+    - intel
+  cache:
+    key: 'build-py37'
+
+build_macos_intel_38:
+  extends: .build_template
+  variables:
+    PYTHON_VERSION: "3.8"
+  tags:
+    - macos
+    - intel
+  cache:
+    key: 'build-py38'
+
 
 # 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 a883a04265623da0e52e129eb3be3438438e9279..e34164dcee07ab981864a22b08b784d3dd9481fd 100644
--- a/bob/devtools/data/gitlab-ci/noarch.yaml
+++ b/bob/devtools/data/gitlab-ci/noarch.yaml
@@ -67,6 +67,17 @@ build_linux:
       - ${CONDA_ROOT}/conda-bld/noarch/*.tar.bz2
 
 
+build_macos_intel:
+  variables:
+    PYTHON_VERSION: "3.8"
+  cache:
+    key: "build"
+  extends: .build_template
+  tags:
+    - macos
+    - intel
+
+
 # Test targets (not normally used)
 .test_template:
   extends: .bootstrap
@@ -86,6 +97,13 @@ build_linux:
   image: docker.idiap.ch/bob/docker-images/c3i-linux-64
 
 
+.test_macos_intel_template:
+  extends: .test_template
+  tags:
+    - macos
+    - intel
+
+
 # Deploy targets
 .deploy_template:
   extends: .bootstrap
@@ -95,6 +113,7 @@ build_linux:
     - bdt ci clean -vv
   dependencies:
     - build_linux
+    - build_macos_intel
   tags:
     - docker
   cache:
@@ -133,6 +152,7 @@ pypi:
     - bdt ci clean -vv
   dependencies:
     - build_linux
+    - build_macos_intel
   tags:
     - docker
   cache:
diff --git a/bob/devtools/data/gitlab-ci/single-package.yaml b/bob/devtools/data/gitlab-ci/single-package.yaml
index 0f31d385ed376e230b8b1245a9edbddd8c2870c6..0f14aabe893586f65dfb4e7fbc6a1ac90b83eb0f 100644
--- a/bob/devtools/data/gitlab-ci/single-package.yaml
+++ b/bob/devtools/data/gitlab-ci/single-package.yaml
@@ -57,6 +57,31 @@ stages:
       - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
 
 
+.build_macos_intel_template:
+  extends: .build_template
+  tags:
+    - macos
+    - intel
+  artifacts:
+    paths:
+      - ${CONDA_ROOT}/conda-bld/osx-64/*.conda
+      - ${CONDA_ROOT}/conda-bld/osx-64/*.tar.bz2
+
+
+build_macos_intel_37:
+  extends: .build_macos_intel_template
+  variables:
+    PYTHON_VERSION: "3.7"
+  cache:
+    key: "build-py37"
+
+build_macos_intel_38:
+  extends: .build_macos_intel_template
+  variables:
+    PYTHON_VERSION: "3.8"
+  cache:
+    key: "build-py38"
+
 build_linux_37:
   extends: .build_linux_template
   variables:
@@ -103,6 +128,13 @@ build_linux_38:
   image: docker.idiap.ch/bob/docker-images/c3i-linux-64
 
 
+.test_macos_intel_template:
+  extends: .test_template
+  tags:
+    - macos
+    - intel
+
+
 # Deploy targets
 .deploy_template:
   extends: .bootstrap
@@ -113,6 +145,8 @@ build_linux_38:
   dependencies:
     - build_linux_37
     - build_linux_38
+    - build_macos_intel_37
+    - build_macos_intel_38
   tags:
     - docker
   cache:
@@ -152,6 +186,8 @@ pypi:
   dependencies:
     - build_linux_37
     - build_linux_38
+    - build_macos_intel_37
+    - build_macos_intel_38
   tags:
     - docker
   cache: