diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6c404f68c4708155dd687c990d116aa78ff502a4..d03e045a112387651ce5019a61df33531aa9463c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,8 +10,27 @@ stages:
   - build
   - package
 
+defaults:
+  before_script:
+    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
+    - eval $(ssh-agent -s)
+    - ssh-add <(echo "$GIT_SSH_PRIV_KEY")
+    - git config --global user.email "firmware@freifunk-stuttgart.de"
+    - git config --global user.name "FFS Buildbot"
+    - mkdir -p ~/.ssh
+    - cat gitlab-known-hosts >> ~/.ssh/known_hosts
+    - test -d ffs-openwrt-dl-cache || git clone ssh://git@gitlab.freifunk-stuttgart.de:22220/firmware/ffs-openwrt-dl-cache.git
+    - git -C ffs-openwrt-dl-cache pull
+    - rm -rf gluon/openwrt/dl && mkdir -p gluon/openwrt && ln -s ../../ffs-openwrt-dl-cache gluon/openwrt/dl
+    - rm -rf gluon/openwrt/staging_dir && mkdir -p staging_dir && ln -s ../../staging_dir gluon/openwrt/staging_dir
+  script:
+    - make -C gluon GLUON_SITEDIR="$CI_PROJECT_DIR" GLUON_TARGET="$GLUON_TARGET" GLUON_BRANCH=stable FFS_BUILD_DATE=$(cat build.date) BROKEN="$BROKEN" V=1 -j`nproc`
+    - cd gluon/openwrt/dl && git add . && git commit -m "update DL cache" && git push || true
+
 generate_date:
   stage: generate_date
+  before_script:
+    - echo dummy
   script: 
     - date '+%Y-%m-%d' > build.date
   artifacts:
@@ -34,21 +53,6 @@ update:
 
 .target:
   stage: build
-  before_script:
-    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
-    - eval $(ssh-agent -s)
-    - ssh-add <(echo "$GIT_SSH_PRIV_KEY")
-    - git config --global user.email "firmware@freifunk-stuttgart.de"
-    - git config --global user.name "FFS Buildbot"
-    - mkdir -p ~/.ssh
-    - cat gitlab-known-hosts >> ~/.ssh/known_hosts
-    - test -d ffs-openwrt-dl-cache || git clone ssh://git@gitlab.freifunk-stuttgart.de:22220/firmware/ffs-openwrt-dl-cache.git
-    - git -C ffs-openwrt-dl-cache pull
-    - rm -rf gluon/openwrt/dl && mkdir -p gluon/openwrt && ln -s ../../ffs-openwrt-dl-cache gluon/openwrt/dl
-    - rm -rf gluon/openwrt/staging_dir && mkdir -p staging_dir && ln -s ../../staging_dir gluon/openwrt/staging_dir
-  script:
-    - make -C gluon GLUON_SITEDIR="$CI_PROJECT_DIR" GLUON_TARGET="$GLUON_TARGET" GLUON_BRANCH=stable FFS_BUILD_DATE=$(cat build.date) BROKEN="$BROKEN" V=1 -j`nproc`
-    - cd gluon/openwrt/dl && git add . && git commit -m "update DL cache" && git push || true
   except:
     - tags
   artifacts: