diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 60a2f09a28c22a2ae976c0e4fd7696b2b7b54169..05bec8a9dc2c196df83d5703741e58acb8b6e2a4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,6 +4,7 @@ stages:
   - lint
   - check
   - generate-access-history
+  - deploy
 
 include:
   - project: 'grid5000/grid5000-gitlab-templates'
@@ -86,6 +87,20 @@ deploy-to-api-servers:
   script:
     - /srv/ci-runner-scripts/bin/update-api-servers
 
+rebuild_resources_explorer:
+  stage: deploy
+  # NOTE: this job triggers a rebuild of resources explorer which will be
+  # automatically deployed to production if it succeeds, therefore it is only
+  # ran on the main branch.
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+  trigger:
+    project: grid5000/resources-explorer
+    # This mirrors the status of RE's pipeline into our own.
+    # We may want to revisit this if we want to show a "green" job as soon
+    # as the pipeline is triggered, regardless of its status.
+    strategy: depend
+
 rspec:
   stage: check  # we use 'checks' here to avoid blocking on this when updating the ref-repo
   extends: .template-refrepo