diff --git a/build-common.yml b/build-common.yml
index a230816e8469742689d829acd45afcd95170a28a..53bef85872770d110cb91378366a25683d8060bd 100644
--- a/build-common.yml
+++ b/build-common.yml
@@ -179,6 +179,9 @@ workflow:
     # Using misc runner because it runs on the same machine as the build runner. This
     # is the only way of being able to use the cache between build and package jobs.
     - misc
+  rules:
+    - if: $PACKAGE_TYPE == "image"
+    - if: $PACKAGE_TYPE == "sdk"
   artifacts:
     paths:
       - release/**/**/*
@@ -188,47 +191,30 @@ workflow:
   before_script:
     # We do this manually since we do not use GitLab's default artifact downloader
     - source build.env
-
-.pull_build_cache: &pull_build_cache
-  key: ${CI_PIPELINE_ID}-${ASSOCIATED_BUILD_JOB}
-  policy: pull
-
-.push_package_cache: &push_package_cache
-  key: ${CI_PIPELINE_ID}-${CI_JOB_NAME}
-  policy: push
-  paths:
-    - release
-    - package.env
-
-.package_release:
-  extends:
-    - .package
   script:
     # BUILD_PATH_* variables are available via build.env from build job
+    - if [[ "${PACKAGE_TYPE}" == "image" ]]; then
     - .gitlab-ci/scripts/package_release.py
         --images-dir="${BUILD_PATH_IMAGE}"
         --licenses-dir="${BUILD_PATH_LICENSE}"
         --doc-dir=.
         --output-dir=release
         --release-suffix="${RELEASE_SUFFIX}"
-  cache:
-    - <<: *pull_build_cache
-      paths: *artifacts_paths
-    - *push_package_cache
-
-.package_sdk:
-  extends:
-    - .package
-  script:
-    # BUILD_PATH_* variables are available via build.env from build job
+    - elif [[ "${PACKAGE_TYPE}" == "sdk" ]]; then
     - .gitlab-ci/scripts/package_release.py
         --sdk-dir="${BUILD_PATH_SDK}"
         --output-dir=release
         --release-suffix="${RELEASE_SUFFIX}"
+    - fi
   cache:
-    - <<: *pull_build_cache
+    - key: ${CI_PIPELINE_ID}-${ASSOCIATED_BUILD_JOB}
+      policy: pull
       paths: *artifacts_paths
-    - *push_package_cache
+    - key: ${CI_PIPELINE_ID}-${CI_JOB_NAME}
+      policy: push
+      paths:
+        - release
+        - package.env
 
 # --------------------------------------------------------------------------------------
 # Stage: deploy
diff --git a/build-jobs-ci-test.yml.jinja2 b/build-jobs-ci-test.yml.jinja2
index 955eecd46278d7c5b58c91db35855b738395b440..ead3aff57ea4fb65c83b495a677517c7714b347d 100644
--- a/build-jobs-ci-test.yml.jinja2
+++ b/build-jobs-ci-test.yml.jinja2
@@ -185,16 +185,18 @@ smoketest:seco-mx6:
 # Stage: Package
 # --------------------------------------------------------------------------------------
 package-seco-mx6:
-  extends: .package_release
+  extends: .package
   variables:
+    PACKAGE_TYPE: image
     ASSOCIATED_BUILD_JOB: simulate-build-seco-mx6
   needs:
     - job: simulate-build-seco-mx6
       artifacts: false
 
 package-sdk-seco-mx6:
-  extends: .package_sdk
+  extends: .package
   variables:
+    PACKAGE_TYPE: sdk
     ASSOCIATED_BUILD_JOB: simulate-buildsdk-seco-mx6
   needs:
     - job: simulate-buildsdk-seco-mx6
diff --git a/build-jobs-yocto.yml.jinja2 b/build-jobs-yocto.yml.jinja2
index f9946ddc7031b47db4c36e045aae8a4320ca69e6..f156dc6250edcc4c06c9efee6e08ad99b8bc3fe1 100644
--- a/build-jobs-yocto.yml.jinja2
+++ b/build-jobs-yocto.yml.jinja2
@@ -143,8 +143,9 @@ platformtest:{{ machine }}:
 # --------------------------------------------------------------------------------------
 {% if CI_PARAM_IMAGE %}
 package-{{ machine }}:
-  extends: .package_release
+  extends: .package
   variables:
+    PACKAGE_TYPE: image
     ASSOCIATED_BUILD_JOB: build-{{ machine }}
   needs:
     - job: build-{{ machine }}
@@ -152,8 +153,9 @@ package-{{ machine }}:
     - job: changelog
 
 packagesdk-{{ machine }}:
-  extends: .package_sdk
+  extends: .package
   variables:
+    PACKAGE_TYPE: sdk
     ASSOCIATED_BUILD_JOB: buildsdk-{{ machine }}
   needs:
     - job: buildsdk-{{ machine }}
@@ -162,8 +164,9 @@ packagesdk-{{ machine }}:
 
 {% if CI_PARAM_IMAGE_FNG %}
 package-{{ machine }}-fngsystem:
-  extends: .package_release
+  extends: .package
   variables:
+    PACKAGE_TYPE: image
     ASSOCIATED_BUILD_JOB: build-{{ machine }}-fngsystem
   needs:
     - job: build-{{ machine }}-fngsystem