diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c0edf1bbbb9bcf49e2455b2995e5a24997778295..3175fd2be64ac3de33c666056b3f894830517d2f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,6 +22,21 @@ stages:
   - pre-deploy
   - deploy
 
+.template: &job-test-template
+  stage: tests
+  dependencies:
+    - build php
+  coverage: '/^\s*Lines:\s*\d+.\d+\%/'
+
+.template: &job-test-integration-template
+  <<: *job-test-template
+  services:
+    - mysql
+  script:
+    - ls -l
+    - php --version
+    - composer phpunit-integration
+
 build php:
   image: wpdesknet/phpunit-woocommerce:0-0
   stage: build
@@ -34,94 +49,45 @@ build php:
     - ls /usr/local/bin
     - composer install --no-progress
 
-#build js:
-#  image: node:slim
-#  stage: build
-#  script:
-#    - cd app
-#    - git clone git@gitlab.com:wpdesk/plugins-tests.git
-#    - cd plugins-tests
-#    - npm install
-#    - grunt dev-chrome
-
 code style test:
+  <<: *job-test-template
   image: wpdesknet/phpunit-woocommerce:0-0
-  stage: tests
   allow_failure: true
-  dependencies:
-    - build php
   script:
     - ls -l
     - php --version
     - composer phpcs
 
 unit test 0:
+  <<: *job-test-template
   image: wpdesknet/phpunit-woocommerce:0-0
-  stage: tests
-  dependencies:
-    - build php
-  coverage: '/^\s*Lines:\s*\d+.\d+\%/'
   script:
     - ls -l
     - php --version
     - composer phpunit-unit
 
 integration test 0-0:
+  <<: *job-test-integration-template
   image: wpdesknet/phpunit-woocommerce:0-0
-  services:
-    - mysql
-  stage: tests
-  coverage: '/^\s*Lines:\s*\d+.\d+\%/'
-  dependencies:
-    - build php
-  script:
-    - php --version
-    - composer phpunit-integration
 
 integration test 1-1:
+  <<: *job-test-integration-template
   image: wpdesknet/phpunit-woocommerce:1-1
-  services:
-    - mysql
-  stage: tests
-  coverage: '/^\s*Lines:\s*\d+.\d+\%/'
-  dependencies:
-    - build php
-  script:
-    - php --version
-    - composer phpunit-integration
 
 integration test 2-2:
+  <<: *job-test-integration-template
   image: wpdesknet/phpunit-woocommerce:2-2
-  services:
-    - mysql
-  stage: tests
-  coverage: '/^\s*Lines:\s*\d+.\d+\%/'
-  dependencies:
-    - build php
-  script:
-    - php --version
-    - composer phpunit-integration
 
 integration test 3-3:
+  <<: *job-test-integration-template
   image: wpdesknet/phpunit-woocommerce:3-3
-  services:
-    - mysql
-  stage: tests
-  coverage: '/^\s*Lines:\s*\d+.\d+\%/'
-  dependencies:
-    - build php
   script:
     - php --version
     - phpunit --configuration phpunit-integration.xml
 
 integration test 4-3:
+  <<: *job-test-integration-template
   image: wpdesknet/phpunit-woocommerce:4-3
-  services:
-    - mysql
-  stage: tests
-  coverage: '/^\s*Lines:\s*\d+.\d+\%/'
-  dependencies:
-    - build php
   script:
     - php --version
     - phpunit --configuration phpunit-integration.xml
@@ -155,31 +121,15 @@ build to deploy:
   script:
     - php --version
     - ls -l
-    - rm -rf ${CI_PROJECT_DIR}/release
-    - rm -rf ${CI_PROJECT_DIR}/release.zip
-    - rm -rf /tmp/release
+    - rm -rf ${CI_PROJECT_DIR}/release ${CI_PROJECT_DIR}/release.zip /tmp/release
     - mkdir /tmp/release
     - mkdir ${CI_PROJECT_DIR}/release
     - cp -rf ${CI_PROJECT_DIR}/* /tmp/release
     - cp -rf /tmp/release/* ${CI_PROJECT_DIR}/release
     - cd ${CI_PROJECT_DIR}/release
     - composer install --no-dev --no-progress
-    - rm -rf build-coverage
-    - rm -rf release
-    - rm -rf tests
-    - rm -rf docs
-    - rm -rf .git
-    - rm -f .editorconfig
-    - rm -f .gitignore
-    - rm -f .gitlab-ci.yml
-    - rm -f apigen.neon
-    - rm -f composer.json
-    - rm -f composer.lock
-    - rm -f phpcs.xml.dist
-    - rm -f phpunit-integration.xml
-    - rm -f phpunit-unit.xml
-    - rm -f composer.phar
-    - rm -f wp-cli.phar
+    - rm -rf build-coverage release tests docs .git .editorconfig .gitignore .gitlab-ci.yml apigen.neon \
+      composer.json composer.lock phpcs.xml.dist phpunit-integration.xml phpunit-unit.xml composer.phar wp-cli.phar
     - zip -r -q ../release.zip ./
   only:
     - tags