diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3c02423d6c510990dba18edc4173450157c54671
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,29 @@
+image: quantumtinkerer/research
+
+build and upload the contents:
+  before_script:
+    ## Install ssh-agent if not already installed, it is required by Docker.
+    ## (change apt-get to yum if you use an RPM-based image)
+    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
+
+    ## Run ssh-agent (inside the build environment)
+    - eval $(ssh-agent -s)
+
+    ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
+    ## We're using tr to fix line endings which makes ed25519 keys work
+    ## without extra base64 encoding.
+    ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
+    - echo "$WEBSITE_UPLOAD_KEY" | tr -d '\r' | ssh-add - > /dev/null
+
+    ## Create the SSH directory and give it the right permissions
+    - mkdir -p /root/.ssh
+    - chmod 700 /root/.ssh
+    - ssh-keyscan tnw-tn1.tudelft.net >> /root/.ssh/known_hosts
+    - chmod 644 /root/.ssh/known_hosts
+    - node install gitbook
+
+  script:
+    # Compile lectures
+    - gitbook update
+    - gitbook build
+    - "rsync -rv _book solidstate@tnw-tn1.tudelft.net:test"