diff --git a/templates/gitlab-ci-docker.yml b/templates/gitlab-ci-docker.yml
index 69a855d393f7447be8568ec1b9e47a42deb8fc0a..180a8abbfcfa20e1a1345c62b913412058cccc8a 100644
--- a/templates/gitlab-ci-docker.yml
+++ b/templates/gitlab-ci-docker.yml
@@ -351,7 +351,8 @@ stages:
   }
 
   function awkenvsubst() {
-    awk '{while(match($0,"[$%]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH-3);val=ENVIRON[var]; gsub(/["\\]/,"\\\\&",val); gsub("\n","\\n",val);gsub("\r","\\r",val); gsub("[$%]{"var"}",val)}}1'
+    # performs variables escaping: '&' for gsub + JSON chars ('\' and '"')
+    awk '{while(match($0,"[$%]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH-3);val=ENVIRON[var];gsub(/["\\&]/,"\\\\&",val);gsub("[$%]{"var"}",val)}}1'
   }
 
   function configure_registries_auth() {