diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f06560e649ccefa5bad76e2abdfba348bc9a84c3
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,40 @@
+stages:
+    - check
+    - website
+
+default:
+  tags: [docker]
+
+image: rocker/tidyverse:4.0.5
+
+variables:
+  R_LIBS_USER: "$CI_PROJECT_DIR/ci/lib"
+  CHECK_DIR: "$CI_PROJECT_DIR/ci/logs"
+  BUILD_LOGS_DIR: "$CI_PROJECT_DIR/ci/logs/$CI_PROJECT_NAME.Rcheck"
+
+cache:
+  paths:
+    - $R_LIBS_USER
+
+before_script:
+  - mkdir -p $R_LIBS_USER $BUILD_LOGS_DIR
+  - echo "R_LIBS='$R_LIBS_USER'" > .Renviron
+  - R -e 'devtools::install_deps(dep = T)'
+
+check:
+  stage: check
+  script:
+    - if [[ $NOT_CRAN == "false" ]]; then sudo apt-get update && sudo apt-get install -y qpdf; fi
+    - R -e 'rcmdcheck::rcmdcheck(args = "--no-manual", error_on = "warning")'
+
+website:
+  stage: website
+  only:
+    - master
+    - dev
+    - tags
+  script:
+    - R -e 'devtools::update_packages(packages = "pkgdown")'
+    - R -e 'pkgdown::build_site()'
+    - sudo apt-get update && sudo apt-get install -y sshpass rsync
+    - sshpass -p "${OVH_PASS}" rsync -a -e "ssh -o StrictHostKeyChecking=no" docs/ ${OVH_LOGIN}@${OVH_SFTP}:/home/${OVH_LOGIN}/in-wop/bnpe/
diff --git a/_pkgdown.yml b/_pkgdown.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1ac320b60baf97094047a1423c59d706f0603966
--- /dev/null
+++ b/_pkgdown.yml
@@ -0,0 +1,22 @@
+url: https://in-wop.g-eau.fr/bnpe
+development:
+  mode: unreleased
+
+template:
+  params:
+    bootswatch: flatly
+
+navbar:
+  structure:
+    right: [gitlab]
+  components:
+    github: ~
+    gitlab:
+      icon: fab fa-gitlab fa-lg
+      href: https://gitlab.irstea.fr/in-wop/bnpe
+
+repo:
+  url:
+    home: https://gitlab.irstea.fr/in-wop/bnpe/
+    source: https://gitlab.irstea.fr/in-wop/bnpe/-/blob/master/
+    issue: https://gitlab.irstea.fr/in-wop/bnpe/-/issues/