diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c3ef5250f09e43d82946d939384c0db636b83006
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,39 @@
+stages:
+    - github-sync
+
+push_to_github:
+    stage: github-sync
+    variables:
+        GIT_STRATEGY: none
+    tags:
+        - github
+    script:
+        - rm -rf ./*
+        - rm -rf .git
+        - git clone --mirror $CI_REPOSITORY_URL .
+        - git remote add github $GITHUB_URL_AND_KEY
+        - git config --global user.email "contact@duniter.org"
+        - git config --global user.name "Duniter"
+        # Job would fail if we don't remove refs about pull requests
+        - bash -c "cat packed-refs | grep -v 'refs/pull' > packed-refs-new; echo 'Removed pull refs.'"
+        - mv packed-refs-new packed-refs
+        - bash -c "git push --force --mirror github 2>&1 | grep -v duniter-gitlab; echo $?"
+
+enforce_readme:
+    stage: github-sync
+    variables:
+        GIT_STRATEGY: none
+    tags:
+        - github
+    script:
+      - rm -rf ./*
+      - rm -rf .git
+      - git clone $GITHUB_URL_AND_KEY .
+      - git config --global user.email "contact@duniter.org"
+      - git config --global user.name "Duniter"
+      - git checkout master
+      - cat .github/github_disclaimer.md > README.md.new
+      - cat README.md >> README.md.new
+      - cp README.md.new README.md
+      - git commit -am "Enforce github readme"
+      - git push origin master