diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..64fe81158d22a112a10714ef6f06647ee2b49284
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,21 @@
+image: eclipse-temurin:8
+
+variables:
+  GRADLE_ARGS: --no-daemon --stacktrace --warning-mode=all
+  GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
+
+cache:
+  paths:
+    - .gradle/caches
+    - .gradle/notifications
+    - .gradle/wrapper
+
+publish:
+  stage: deploy
+  script:
+    - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -in secring.gpg.enc -out secring.gpg -d
+    - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -in pubring.gpg.enc -out pubring.gpg -d
+    - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -in gradle.properties.enc -out tlatools/gradle.properties -d
+    - tlatools/gradlew -btlatools/build.gradle ${GRADLE_ARGS} uploadArchives
+  only:
+    - master@general/stups/tlatools
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index d90322d8b140294edd6d327d19a992913d1dcdb3..0000000000000000000000000000000000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: java
-jdk:
-- oraclejdk7
-before_install:
-- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in secring.gpg.enc -out secring.gpg
-  -d
-- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in pubring.gpg.enc -out pubring.gpg
-  -d
-- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in gradle.properties.enc -out
-  tlatools/gradle.properties -d
-install: /bin/true
-script: gradle -btlatools/build.gradle uploadArchives
-env:
-  global:
-    secure: IrwH0PGjlWp22J55HCJrmqUlupD4X+BIYNnpn88lAtWDeqS+iSl43p42woBxHdrXDwPdYBWpLOYLtDxf7EEw9gnvp5y9FUyYBqscjqTKVpsXAH7f/aCgMb9S4p9kYC/jME7cKwiY2/fx+yAFOQqEOqpBWUrIQssH6ApfOv/3P5khb0O0BMYh0ek8oVrX9+NHpQTnolPIG8chBS53iHM27InQp9RB7sW+l69UaP1+jkzSbyvcfI+p64mgpHZQxnL6DeBi5d82cHDog38GbMeOgBJPNeMplSKo9ofTqOLChqfCAT4s0XskASkQNz7OOC8zWNeEoXpQF8ff9QqKrHyS284LZrrdf8pcJoQgFm/DSilUFCMRCNDWmAuCBR7In8zeBNVbMKR4v2/tcu5yR/PT5disS9Flxl2V3t0/s4MN88qN4w5ZU5I+KxxkR3NJoDWtfCz1b9vQXEXdWiUi5dwpKZ3skxQxY/w+/h2qyYfFfqFHTKW0z98ZBygGySlwsEPVzmva3o6L0bT+6dlT0/5GQi3tbgc6n+M+eafpP/EPybghLqUVF46h3hibK6Bykj3+9djBb0OZTOwyBuQO69TmXWUU/tlMwlBmz2ib3pgz2MBnWNdui6UVwVI2y2fhHNkCc/tRg356dxbI4p6oP0ogncdwlOlGsEUX773GjYQmHhU=
-notifications:
-  slack:
-    secure: HxqGQAv7cFhN8Q791tAnyxZqwIV+lnC7fRayhlRfFPP/briPVM9PX7uuLbWVX8RztOPlqM79ztKBQic0z+2o3S/fA+sO2QuC80VXw2uV/9k4ZX+UhtHMtSp6JzwdKTVpTMHorFPQ3GvESlQ+bOY+cLn+U+lZ0IGM8KYydADQ9QhbP7h8Ooptk4dhQmZfDG0aDGMqCQDbL+8IigFMIlTEx5IiX67eVOnDv8fotmsJGPZsAAY4xy+P2JfdWUo/wCiOYXwqF2k/d8A19nssjTYjXVTh41QYFvO2A1J5Ux6JnUliFla3WuqqPeUpszd2sKFIIgt35gnKOWXR+o140KDQJxa8PXZwUlNJ9miGqp3xGjsKnHdPEsRcAaC7RAapZ6HInrtSiv0wkjucbZzkpTF9D6eBABOvAw6L0HkT/ocW6P6ltak22zVlhndeCFkURAUhayqWjVYdaKWb3jKPOj8AMDB75CVVClY7N66mZfgTffsmsU6LhObfjsSrd/4fAA20/uoweVroFqrtySMXsoZFMrzttYP9qV1/RA8CYE/C+PgsLpvDs5W+7A7i7Lt6UkKy9O+wvHhj8YllKt9JZwNYqT26gO5nL8bsP3b/NUuPRsF4IzY0exhty/w0FLqCJ4cZtMUMGAjxKS41V8GArMqpKPdxyXeqo6+oNTlbHNnr/8w=