diff --git a/templates/gitlab-ci-python.yml b/templates/gitlab-ci-python.yml
index 04914720e087538cf42069bd296c732b63bed339..87c9d889addbc755df8a9add3d4ce33f8ebcd02e 100644
--- a/templates/gitlab-ci-python.yml
+++ b/templates/gitlab-ci-python.yml
@@ -523,6 +523,28 @@ variables:
     done
   }
 
+  function maybe_install_packages() {
+    if command -v apt-get > /dev/null
+    then
+      # Debian
+      if ! dpkg --status "$@" > /dev/null
+      then
+        apt-get update
+        apt-get install --yes --quiet "$@"
+      fi
+    elif command -v apk > /dev/null
+    then
+      # Alpine
+      if ! apk info --installed "$@" > /dev/null
+      then
+        apk add --no-cache "$@"
+      fi
+    else
+      log_error "... didn't find any supported package manager to install $*"
+      exit 1
+    fi
+  }
+
   function guess_build_system() {
     case "${PYTHON_BUILD_SYSTEM:-auto}" in
     auto)
@@ -1114,10 +1136,9 @@ py-trivy:
   # force no dependencies
   dependencies: []
   script:
+    - maybe_install_packages wget apt-transport-https gnupg lsb-release
     - mkdir -p -m 777 reports
     - install_requirements
-    - apt-get update
-    - apt-get install -y wget apt-transport-https gnupg lsb-release
     - wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | apt-key add -
     - echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | tee -a /etc/apt/sources.list.d/trivy.list
     - apt-get update