diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 78eb1af3ac240681c274f448f0f99ae21b7d202a..273a6904d3c57bd5d51c1fb5eb50e8370c6207fa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,28 +1,33 @@
 image: maven:latest
 
+variables:
+  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
+  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
+
 cache:
   paths:
     - ~/.m2/repository/
+    - .m2/repository/
     - target/
 
 build:
   stage: build
   script:
-    - mvn compile
+    - mvn $MAVEN_CLI_OPTS compile
   tags:
     - general
 
 test:
   stage: test
   script:
-    - mvn test
+    - mvn $MAVEN_CLI_OPTS test
   tags:
     - opencl
 
 deploy:
   stage: deploy
   script:
-    - mvn -DskipTests=true deploy
+    - mvn $MAVEN_CLI_OPTS -DskipTests=true deploy
   tags:
     - general
   only:
diff --git a/.m2/settings.xml b/.m2/settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d3ef8b19713fa0e7257677f18d46773cc1cc06f4
--- /dev/null
+++ b/.m2/settings.xml
@@ -0,0 +1,15 @@
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
+    xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <servers>
+    <server>
+      <id>ossrh.snapshots</id>
+      <username>${env.MAVEN_REPO_USER}</username>
+      <password>${env.MAVEN_REPO_PASS}</password>
+    </server>
+    <server>
+      <id>ossrh</id>
+      <username>${env.MAVEN_REPO_USER}</username>
+      <password>${env.MAVEN_REPO_PASS}</password>
+    </server>
+  </servers>
+</settings>