diff --git a/build-pipeline-ci-test.yml b/build-pipeline-ci-test.yml
index cfe4174d2840b890273e2cfc3bcef776765dda2d..f84cbf236779a124852b9988344343680199909b 100644
--- a/build-pipeline-ci-test.yml
+++ b/build-pipeline-ci-test.yml
@@ -6,7 +6,7 @@ include:
   - project: '${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/gitlab-ci'
     ref: ${GITLAB_CI_REVISION}
     file:
-      - build-common.yml
+      - build-pipeline.yml
       - common.yml
 
 stages:
diff --git a/build-pipeline-yocto.yml.jinja2 b/build-pipeline-yocto.yml.jinja2
index 3eaf71e1b2149455b66788a32b8cc5416041456a..643f848c32dbab2dd6ed8ee71d783a186e6d232c 100644
--- a/build-pipeline-yocto.yml.jinja2
+++ b/build-pipeline-yocto.yml.jinja2
@@ -8,8 +8,7 @@ include:
   - project: '{{ CI_PROJECT_ROOT_NAMESPACE }}/yocto/infrastructure/gitlab-ci'
     ref: {{ GITLAB_CI_REVISION }}
     file:
-      - build-common.yml
-      - build-yocto.yml
+      - build-pipeline.yml
       - common.yml
 
 stages:
diff --git a/build-common.yml b/build-pipeline.yml
similarity index 81%
rename from build-common.yml
rename to build-pipeline.yml
index c45f3fd7315957a187dca9af70b9bf942c73c69e..563b4e00a5b3e86426a930d5f3b33d98f169ca9c 100644
--- a/build-common.yml
+++ b/build-pipeline.yml
@@ -8,7 +8,7 @@ workflow:
 # --------------------------------------------------------------------------------------
 # Scripts
 # --------------------------------------------------------------------------------------
-.docker_check:
+.docker_check: &docker_check
   # Check if the build folder is empty. Sometimes the docker volume for the build is not
   # removed afterwards (e.g. in case of a timeout), then a follow-up build might fail.
   - |-
@@ -21,7 +21,7 @@ workflow:
         exit 1
     fi
 
-.setup_ssh:
+.setup_ssh: &setup_ssh
   # Setup ssh key to access private repos
   # https://docs.gitlab.com/ee/ci/ssh_keys/#ssh-keys-when-using-the-docker-executor
   # An SSH keypair has been generated for the manifest's pipeline to be able to access
@@ -45,7 +45,7 @@ workflow:
   # Write SSH configuration from variable to config file
   - echo "$SSH_CONFIG" > ~/.ssh/config
 
-.repo_checkout:
+.repo_checkout: &repo_checkout
   - echo "${LOGPREFIX} Perform repo checkout"
   - cd ${CI_PROJECT_DIR}
   - repo init --submodules -u ${CI_REPOSITORY_URL}
@@ -53,6 +53,74 @@ workflow:
   - repo sync --detach --current-branch --force-remove-dirty
       --optimized-fetch --force-sync
 
+.collect_srcrevs: &collect_srcrevs
+  # write all package AUTOREVS to file
+  - |-
+    SRCREVS_FILE="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/BUILD_SRCREVS.log"
+    if [ -d "$( dirname "${SRCREVS_FILE}" )" ];then
+        buildhistory-collect-srcrevs > ${SRCREVS_FILE}
+        echo "${LOGPREFIX} buildhistory-collect-srcrevs:"
+        cat ${SRCREVS_FILE}
+    fi
+
+.dump_install_command: &dump_install_command
+  # print install instructions
+  - |-
+    if [[ ! -z "${INSTALLSCRIPT}" ]]; then
+      SCRIPT="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
+      if [ ! -f "${SCRIPT}" ]; then
+          echo "Install script missing, searched for '$SCRIPT'"
+          exit 1
+      fi
+
+      if [ "$CI_PROJECT_VISIBILITY" = "public" ];then
+      cat <<-EOF
+      ==============================
+          Install the image:
+
+      FNG="$FNG_INSTALL_URL"
+      curl --location "\$FNG" | sh -s -- --url="\$(dirname "\$FNG")"
+      ==============================
+    EOF
+      else
+      cat <<-EOF
+      ==============================
+          Install the image:
+
+      export GITLAB_TOKEN=<your_access_token>
+      FNG="$FNG_INSTALL_URL"
+      curl --location --header "PRIVATE-TOKEN: \$GITLAB_TOKEN" "\$FNG" \
+                                | sh -s -- --url="\$(dirname "\$FNG")"
+      ==============================
+    EOF
+      fi
+    fi
+
+.build_script: &build_script
+  # setup build environment
+  - echo "${LOGPREFIX} Build configuration MACHINE=${CI_PARAM_MACHINE}
+      DISTRO=${CI_PARAM_DISTRO} IMAGE=${CI_PARAM_IMAGE}"
+  - source build.env
+  - echo "${LOGPREFIX} Using build dir ${BUILDPATH}"
+  - export MACHINE="${CI_PARAM_MACHINE}"
+  - export DISTRO="${CI_PARAM_DISTRO}"
+  - export EULA="1"
+  - source ./"${SETUPSCRIPT}" "${BUILDPATH}"
+  # start build
+  - echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log"
+  - echo "${LOGPREFIX} bitbake ${CI_PARAM_IMAGE} -c ${BITBAKE_TASK}"
+  - bitbake "${CI_PARAM_IMAGE}" -c "${BITBAKE_TASK}"
+  - echo -e "section_end:`date +%s`:bitbake_run\r\e[0K"
+
+.save_build_env: &save_build_env
+  - echo "BUILD_MACHINE=$CI_PARAM_MACHINE" > build.env
+  - echo "BUILD_IMAGE=$CI_PARAM_IMAGE" >> build.env
+  - echo "BUILD_DISTRO=$CI_PARAM_DISTRO" >> build.env
+  - echo "BUILD_PATH_IMAGE=${BUILDPATH}/${IMAGEPATH}" >> build.env
+  - echo "BUILD_PATH_SDK=${BUILDPATH}/${SDKPATH}" >> build.env
+  - echo "BUILD_PATH_LICENSE=${BUILDPATH}/${LICENSESPATH}" >> build.env
+  - echo "FNG_INSTALL_URL=${JOB_URL}${FNG_INSTALL_PATH}" >> build.env
+
 # --------------------------------------------------------------------------------------
 # Stage: Infrastructure
 # --------------------------------------------------------------------------------------
@@ -137,6 +205,31 @@ workflow:
     - key: ${CI_JOB_NAME}-${BUILD_ARTIFACTS}
       paths: *artifacts_paths
 
+.build_yocto:
+  extends:
+    - .buildbase
+  needs: []
+  variables:
+    GIT_STRATEGY: none
+    SETUPSCRIPT: "setup-environment"
+    LOGPREFIX: "CI:build:"
+    BUILDPATH: "build-${CI_PARAM_DISTRO}-${CI_PARAM_MACHINE}"
+    IMAGEBASEPATH: "tmp/deploy/images/"
+    IMAGEPATH: "${IMAGEBASEPATH}/${CI_PARAM_MACHINE}"
+    LICENSESPATH: "tmp/deploy/licenses"
+    SDKPATH: "tmp/deploy/sdk/"
+    JOB_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/artifacts/"
+    FNG_INSTALL_PATH: "${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
+  before_script:
+    - *docker_check
+    - *setup_ssh
+    - *repo_checkout
+  script:
+    - *save_build_env
+    - *build_script
+    - *collect_srcrevs
+    - *dump_install_command
+
 # --------------------------------------------------------------------------------------
 # Stage: test
 # --------------------------------------------------------------------------------------
diff --git a/build-yocto.yml b/build-yocto.yml
deleted file mode 100644
index 819d7d72312963145c1e77edfa0204ea05fa66f5..0000000000000000000000000000000000000000
--- a/build-yocto.yml
+++ /dev/null
@@ -1,97 +0,0 @@
----
-
-# --------------------------------------------------------------------------------------
-# Stage: Build
-# --------------------------------------------------------------------------------------
-.collect_srcrevs: &collect_srcrevs
-  # write all package AUTOREVS to file
-  - |-
-    SRCREVS_FILE="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/BUILD_SRCREVS.log"
-    if [ -d "$( dirname "${SRCREVS_FILE}" )" ];then
-        buildhistory-collect-srcrevs > ${SRCREVS_FILE}
-        echo "${LOGPREFIX} buildhistory-collect-srcrevs:"
-        cat ${SRCREVS_FILE}
-    fi
-
-.dump_install_command: &dump_install_command
-  # print install instructions
-  - |-
-    if [[ ! -z "${INSTALLSCRIPT}" ]]; then
-      SCRIPT="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
-      if [ ! -f "${SCRIPT}" ]; then
-          echo "Install script missing, searched for '$SCRIPT'"
-          exit 1
-      fi
-
-      if [ "$CI_PROJECT_VISIBILITY" = "public" ];then
-      cat <<-EOF
-      ==============================
-          Install the image:
-
-      FNG="$FNG_INSTALL_URL"
-      curl --location "\$FNG" | sh -s -- --url="\$(dirname "\$FNG")"
-      ==============================
-    EOF
-      else
-      cat <<-EOF
-      ==============================
-          Install the image:
-
-      export GITLAB_TOKEN=<your_access_token>
-      FNG="$FNG_INSTALL_URL"
-      curl --location --header "PRIVATE-TOKEN: \$GITLAB_TOKEN" "\$FNG" \
-                                | sh -s -- --url="\$(dirname "\$FNG")"
-      ==============================
-    EOF
-      fi
-    fi
-
-.build_script: &build_script
-  # setup build environment
-  - echo "${LOGPREFIX} Build configuration MACHINE=${CI_PARAM_MACHINE}
-      DISTRO=${CI_PARAM_DISTRO} IMAGE=${CI_PARAM_IMAGE}"
-  - source build.env
-  - echo "${LOGPREFIX} Using build dir ${BUILDPATH}"
-  - export MACHINE="${CI_PARAM_MACHINE}"
-  - export DISTRO="${CI_PARAM_DISTRO}"
-  - export EULA="1"
-  - source ./"${SETUPSCRIPT}" "${BUILDPATH}"
-  # start build
-  - echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log"
-  - echo "${LOGPREFIX} bitbake ${CI_PARAM_IMAGE} -c ${BITBAKE_TASK}"
-  - bitbake "${CI_PARAM_IMAGE}" -c "${BITBAKE_TASK}"
-  - echo -e "section_end:`date +%s`:bitbake_run\r\e[0K"
-
-.save_build_env: &save_build_env
-  - echo "BUILD_MACHINE=$CI_PARAM_MACHINE" > build.env
-  - echo "BUILD_IMAGE=$CI_PARAM_IMAGE" >> build.env
-  - echo "BUILD_DISTRO=$CI_PARAM_DISTRO" >> build.env
-  - echo "BUILD_PATH_IMAGE=${BUILDPATH}/${IMAGEPATH}" >> build.env
-  - echo "BUILD_PATH_SDK=${BUILDPATH}/${SDKPATH}" >> build.env
-  - echo "BUILD_PATH_LICENSE=${BUILDPATH}/${LICENSESPATH}" >> build.env
-  - echo "FNG_INSTALL_URL=${JOB_URL}${FNG_INSTALL_PATH}" >> build.env
-
-.build_yocto:
-  extends:
-    - .buildbase
-  needs: []
-  variables:
-    GIT_STRATEGY: none
-    SETUPSCRIPT: "setup-environment"
-    LOGPREFIX: "CI:build:"
-    BUILDPATH: "build-${CI_PARAM_DISTRO}-${CI_PARAM_MACHINE}"
-    IMAGEBASEPATH: "tmp/deploy/images/"
-    IMAGEPATH: "${IMAGEBASEPATH}/${CI_PARAM_MACHINE}"
-    LICENSESPATH: "tmp/deploy/licenses"
-    SDKPATH: "tmp/deploy/sdk/"
-    JOB_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/artifacts/"
-    FNG_INSTALL_PATH: "${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
-  before_script:
-    - !reference [.docker_check]
-    - !reference [.setup_ssh]
-    - !reference [.repo_checkout]
-  script:
-    - *save_build_env
-    - *build_script
-    - *collect_srcrevs
-    - *dump_install_command