diff --git a/manifest-pipeline-yocto.yml b/manifest-pipeline-yocto.yml
index 2d8b87ce17fef622e83b14ebd70078d338f78d86..258f493d67b2d8df0e33f6048bb0f47b238ff536 100644
--- a/manifest-pipeline-yocto.yml
+++ b/manifest-pipeline-yocto.yml
@@ -186,17 +186,6 @@ retrigger:
       # init repository and generate configuration files for bitbake
       # checkout
       - BASEDIR=$PWD
-      - mkdir -p /home/secous/.ssh
-      - echo "$SSH_KNOWN_HOSTS" > /home/secous/.ssh/known_hosts
-      - echo "$SSH_CONFIG_FILE" > /home/secous/.ssh/config
-      - echo "$SSH_PRIVATE_KEY" > /home/secous/.ssh/id_rsa
-      - chown 1002:1002 /home/secous/.ssh/known_hosts
-      - chown 1002:1002 /home/secous/.ssh/config
-      - chown 1002:1002 /home/secous/.ssh/id_rsa
-      - chmod 600 /home/secous/.ssh/id_rsa
-      - ls -l /home/secous/.ssh/
-      - eval $(ssh-agent -s)
-      - ssh-add /home/secous/.ssh/id_rsa
       - export EULA=1
       - BUILD_BRANCH=${MASTER_BRANCH}
       - |
@@ -210,36 +199,13 @@ retrigger:
          echo "This is the image name will be assigned to software artifacts: ${IMAGE_NAME}"
       - |
         su secous -c "
-        git config --global url.https://github.com/.insteadOf git://github.com/
-        git config --global url.https://gitlab-ci-token:${GITBOT_TOKEN}@git.seco.com/.insteadOf https://git.seco.com/
-        repo init -u ${CI_REPOSITORY_URL} -b ${BUILD_BRANCH}; 
-        repo sync -j$(nproc) --fetch-submodules;
+        sh scripts/build_setup.sh $GITBOT_TOKEN $CI_REPOSITORY_URL $BUILD_BRANCH $DEFCONFIG_FILE $RECIPE_NAME
         . ./seco-setup.sh -d ${DEFCONFIG_FILE};
         . ./seco-setup.sh -c;
-        sed -i -e '/DL_DIR ?=/d' conf/local.conf;
-        echo 'DL_DIR = \"/var/cache/edgehog_downloads\"' >> conf/local.conf;
-        if [[ $PROCESSOR == *imx6* ]]; 
-          then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx6\"' >> conf/local.conf;
-        elif [[ $PROCESSOR == *imx8* ]];
-          then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx8\"' >> conf/local.conf;
-        elif [[ $PROCESSOR == *rk* ]];
-          then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-rk\"' >> conf/local.conf;
-        elif [[ $PROCESSOR == *intel* ]];
-          then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-intel\"' >> conf/local.conf;
-        fi
-        echo '###############################'
-        echo '#### Displaying local.conf ####'
-        echo '###############################'
-        cat conf/local.conf
+        sh scripts/yocto_cache_setup.sh $PROCESSOR
         time bitbake ${RECIPE_NAME};
         if [[ "$CI_JOB_NAME" != *"embedded"* ]]; then time bitbake seco-bundle-edgehog; fi;
         "
-      - ls -la
-      - pwd
-      - echo "$BUILD_DIRECTORY/$IMAGES_PATH/$MACHINE"
-      - ls -la "$BUILD_DIRECTORY"
-      - ls -la "$BUILD_DIRECTORY/$IMAGES_PATH/"
-      - ls -la "$BUILD_DIRECTORY/$IMAGES_PATH/$MACHINE"
       - echo "$BUILD_DIRECTORY/$IMAGES_PATH/$MACHINE" > $BASEDIR/pathname.txt
   
   after_script:
diff --git a/scripts/build_setup.sh b/scripts/build_setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1529ea072c1daef839b4481884015ece4472b343
--- /dev/null
+++ b/scripts/build_setup.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+GITBOT_TOKEN=$1
+CI_REPOSITORY_URL=$2
+BUILD_BRANCH=$3
+DEFCONFIG_FILE=$4
+RECIPE_NAME=$5
+
+git config --global url.https://github.com/.insteadOf git://github.com/
+git config --global url.https://gitlab-ci-token:${GITBOT_TOKEN}@git.seco.com/.insteadOf https://git.seco.com/
+repo init -u ${CI_REPOSITORY_URL} -b ${BUILD_BRANCH}
+repo sync -j$(nproc) --fetch-submodules --no-clone-bundle
+
+RECIPES="u-boot-seco-rk linux-seco-rk u-boot-seco-imx linux-seco-imx imx-mkimage"
+for str in $RECIPES; do
+    if echo "$BUILD_BRANCH" | grep -q "$str"; then 
+        filename=$(find layers/meta-seco-imx layers/meta-seco-rk -name "*$str*" -type f -exec grep -l "SRCBRANCH = " {} \;)
+        echo $filename
+        RECIPE_BRANCH=$(echo "$BUILD_BRANCH" | sed "s|.*$str/||"i | sed 's/\/into.*//')
+        sed -i "s/\(SRCBRANCH = \).*/\1\"$(echo "$RECIPE_BRANCH" | sed 's/[\/&]/\\&/g')\"/" $filename
+        cat $filename
+    fi
+done
\ No newline at end of file
diff --git a/scripts/yocto_cache_setup.sh b/scripts/yocto_cache_setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2742283cbfc05998f317386fbbcadec83b6d99af
--- /dev/null
+++ b/scripts/yocto_cache_setup.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+PROCESSOR=$1
+
+sed -i -e '/DL_DIR ?=/d' conf/local.conf;
+echo 'DL_DIR = \"/var/cache/edgehog_downloads\"' >> conf/local.conf;
+if [[ $PROCESSOR == *imx6* ]]; 
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx6\"' >> conf/local.conf;
+elif [[ $PROCESSOR == *imx8* ]];
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx8\"' >> conf/local.conf;
+elif [[ $PROCESSOR == *rk* ]];
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-rk\"' >> conf/local.conf;
+elif [[ $PROCESSOR == *intel* ]];
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-intel\"' >> conf/local.conf;
+fi
+
+echo '###############################'
+echo '#### Displaying local.conf ####'
+echo '###############################'
+cat conf/local.conf
\ No newline at end of file