diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 209a4188590dbdd23c157af097e9163d3e39cee3..906ef630a92ba682a15499b80c6abda0e8aeffdf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,16 +1,20 @@
-variables:
-  DOCKER_TLS_CERTDIR: ""
+# https://github.com/jonashackt/gitlab-ci-stack#configure-gitlab-runner-with-shell-executor
+# https://github.com/jonashackt/gitlab-ci-shell-example
 
 stages:
   - readme
-  - build
+  - test
   - publish
+  - cleanup
 
-image: docker:19.03.8
+before_script:
+  - docker info
+  - ls -ahl && ls -ahl *
 
 readme:
   stage: readme
-  image: alpine:3.12
+  tags:
+    - shell
   script:
     - apk add gettext
     - source .gitlab/.readme_variables
@@ -33,23 +37,51 @@ readme:
     - echo ""
     - echo ""
     - envsubst < .gitlab/readme_template | less
+    - envsubst < .gitlab/readme_template > /home/gitlab-runner/READMEs/$CI_PROJECT_NAME/README.md
     - echo ""
-    - echo ""
-build:
-  stage: build
+
+test_port:
+  stage: test
+  tags:
+    - shell
+  script:
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+    - docker build  --tag $CI_REGISTRY_IMAGE:arm-port -f Dockerfile.port .
+    - docker push $CI_REGISTRY_IMAGE:arm-port
+
+test_proxy:
+  stage: test
+  tags:
+    - shell
   script:
     - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
-    - docker pull $CI_REGISTRY_IMAGE:port || true
-    - docker build --cache-from $CI_REGISTRY_IMAGE:port --tag $CI_REGISTRY_IMAGE:port -f Dockerfile.port .
-    - docker push $CI_REGISTRY_IMAGE:port
-    - docker build --cache-from $CI_REGISTRY_IMAGE:proxy --tag $CI_REGISTRY_IMAGE:proxy -f Dockerfile.proxy .
-    - docker push $CI_REGISTRY_IMAGE:proxy
+    - docker build  --tag $CI_REGISTRY_IMAGE:arm-proxy -f Dockerfile.proxy .
+    - docker push $CI_REGISTRY_IMAGE:arm-proxy
 
-publish:
+publish_port:
   stage: publish
+  tags:
+    - shell
   script:
     - docker login -u $DOCKER_USER -p $DOCKER_PASSWORD $DOCKER_REGISTRY
-    - docker build --tag $DOCKER_USER/$DOCKER_REPO:arm.port -f Dockerfile.port .
-    - docker push $DOCKER_USER/$DOCKER_REPO:arm.port
-    - docker build --tag $DOCKER_USER/$DOCKER_REPO:arm.proxy -f Dockerfile.proxy .
-    - docker push $DOCKER_USER/$DOCKER_REPO:arm.proxy
\ No newline at end of file
+    - docker build --tag $DOCKER_USER/$DOCKER_REPO:arm-port -f Dockerfile.port .
+    - docker push $DOCKER_USER/$DOCKER_REPO:arm-port
+    - docker system prune --all --force
+
+publish_port:
+  stage: publish
+  tags:
+    - shell
+  script:
+    - docker login -u $DOCKER_USER -p $DOCKER_PASSWORD $DOCKER_REGISTRY
+    - docker build --tag $DOCKER_USER/$DOCKER_REPO:arm-proxy -f Dockerfile.proxy .
+    - docker push $DOCKER_USER/$DOCKER_REPO:arm-proxy
+    - docker system prune --all --force
+
+cleanup:
+  stage: cleanup
+  tags:
+    - shell
+  script:
+    - rm -rf * .dockerignore .github .gitignore .gitlab
+    - ls -ahl
\ No newline at end of file