diff --git a/templates/gitlab-ci-gcloud.yml b/templates/gitlab-ci-gcloud.yml
index 2c830d77bf46dd44391b2b5444681ac186aa7042..fddfd0548df49315cd574b86bb87d677c97214af 100644
--- a/templates/gitlab-ci-gcloud.yml
+++ b/templates/gitlab-ci-gcloud.yml
@@ -79,6 +79,15 @@ stages:
     fi
   }
 
+  function as_content() {
+    file_or_content=$1
+    if [[ -f ${file_or_content} ]]; then
+      cat "${file_or_content}"
+    else
+      echo "${file_or_content}"
+    fi
+  }
+
   function unscope_variables() {
     _scoped_vars=$(env | awk -F '=' "/^scoped__[a-zA-Z0-9_]+=/ {print \$1}" | sort)
     if [[ -z "$_scoped_vars" ]]; then return; fi
@@ -344,7 +353,8 @@ stages:
     - *gcp-scripts
     - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}"
     - assert_defined "${ENV_KEY_FILE:-$GCP_KEY_FILE}" 'Missing required GCP key file (JSON)'
-    - gcloud auth activate-service-account --key-file ${ENV_KEY_FILE:-$GCP_KEY_FILE}
+    - as_content "${ENV_KEY_FILE:-$GCP_KEY_FILE}" > /tmp/gcp.key
+    - gcloud auth activate-service-account --key-file /tmp/gcp.key
   script:
     - deploy "$ENV_TYPE" "${ENV_APP_NAME:-${GCP_BASE_APP_NAME}${ENV_APP_SUFFIX}}" "$ENV_PROJECT"
   artifacts:
@@ -373,7 +383,8 @@ stages:
     - *gcp-scripts
     - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}"
     - assert_defined "${ENV_KEY_FILE:-$GCP_KEY_FILE}" 'Missing required GCP key file (JSON)'
-    - gcloud auth activate-service-account --key-file ${ENV_KEY_FILE:-$GCP_KEY_FILE}
+    - as_content "${ENV_KEY_FILE:-$GCP_KEY_FILE}" > /tmp/gcp.key
+    - gcloud auth activate-service-account --key-file /tmp/gcp.key
   script:
     - delete "$ENV_TYPE" "${ENV_APP_NAME:-${GCP_BASE_APP_NAME}${ENV_APP_SUFFIX}}" "$ENV_PROJECT"
   environment: