diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8fd3e21617518ceb79380095ea1b59ce7d31e092
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,52 @@
+image: omalaspinas/archlinux-pandoc:latest
+
+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 || (pacman -S --noconfirm openssh)'
+   - 'which rsync || (pacman -S --noconfirm rsync)'
+
+
+   ##
+   ## 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 "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
+
+   ##
+   ## Create the SSH directory and give it the right permissions
+   ##
+   - mkdir -p ~/.ssh
+   - chmod 700 ~/.ssh
+
+   ##
+   ## Add host id to known_hosts
+   ##
+   - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
+   - chmod 644 ~/.ssh/known_hosts
+
+
+
+build_only:
+  script:
+    - make
+    - make deploy
+    - rsync -avz prog_seq_c_cours malaspinas@129.194.185.180:/www/
+
+build_artifacts:
+  script:
+    - make
+  artifacts:
+    paths:
+      - "*.pdf"
+  only:
+    - tags
diff --git a/Makefile b/Makefile
index a8aa7b365683190d43772dfa5df6f4ee6b953fc5..f2cd0b514e73c8160a7b9a949a5f67f68b66c1b1 100644
--- a/Makefile
+++ b/Makefile
@@ -14,5 +14,9 @@ intro.pdf: intro.md *.theme
 base_1.pdf: base_1.md *.theme
 	pandoc -t beamer -o $@ $<
 
+deploy: all
+	mkdir -p prog_seq_c_cours
+	cp *.pdf prog_seq_c_cours
+
 clean:
 	rm -f *.pdf