diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 193a04ff91f0f43715c60a216f0903472509c886..1d59d7e245ec1a6c928f532224f51554096f9369 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,19 +2,44 @@ stages:
   - build
   - deploy
 
-build:
-  image: git-r3lab.uni.lu:4567/r3/docker/nodejs-yarn-grunt
+build index:
+  image: alpine:3.1
   stage: build
-
   rules:
     - if: $CI_COMMIT_BRANCH == "develop"
+  before_script:
+    - git clone https://git-r3lab.uni.lu/R3/school/courses.lcsb.uni.lu.git courses.lcsb.uni.lu
+  script:
+    - python .ci/generateIndex.py
 
+build the website:
+  image: git-r3lab.uni.lu:4567/r3/docker/jekyll-lcsb:1.4
+  stage: build
   before_script:
-    - git submodule update --recursive --init
+    - cd courses.lcsb.uni.lu
+    - gem install bundler -v2.0.2
+    - bundle install && bundle update jekyll-theme-lcsb-default && bundle update jekyll-theme-lcsb-frozen-components
+  script:
+    - bundle exec jekyll build -d site --config "_config.yml"
+  after_script:
+    - mv site ../.
+    - cd ..
+  artifacts:
+    expire_in: 1 day
+    paths:
+      - site
+  variables:
+    JEKYLL_ENV: production
 
+build courses:
+  image: git-r3lab.uni.lu:4567/r3/docker/nodejs-yarn-grunt
+  stage: build
+  rules:
+    - if: $CI_COMMIT_BRANCH == "develop"
+  before_script:
+    - git submodule update --recursive --init
   script:
     - bash .ci/deploy.sh
-
   artifacts:
     expire_in: 1 day
     paths:
@@ -22,9 +47,7 @@ build:
 
 production:
   stage: deploy
-
   image: alpine:3.1
-
   before_script:
     - 'which ssh-agent || ( apk add --update openssh )'
     - eval $(ssh-agent -s)
@@ -33,9 +56,8 @@ production:
     - 'echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
     - echo "$KNOWNHOSTS" > ~/.ssh/known_hosts
     - chmod 644 ~/.ssh/known_hosts
-
   rules:
     - if: '$CI_COMMIT_BRANCH == "develop"'
-
   script:
+    - scp -P $SSHPORT -r site/* $SSHCONNECT:~/web/latest
     - scp -P $SSHPORT -r public/* $SSHCONNECT:~/web/latest