From a987212c0e936b5eea6deb1e2a002d5acb9624a8 Mon Sep 17 00:00:00 2001 From: smanes0213 Date: Tue, 23 Dec 2025 17:06:21 +0530 Subject: [PATCH] fix: apply job isolation and update checkout ref --- .github/workflows/L1-tests.yml | 174 ++++++++++++++++++--------------- 1 file changed, 93 insertions(+), 81 deletions(-) diff --git a/.github/workflows/L1-tests.yml b/.github/workflows/L1-tests.yml index de9bec4d..1be18933 100755 --- a/.github/workflows/L1-tests.yml +++ b/.github/workflows/L1-tests.yml @@ -35,6 +35,21 @@ jobs: coverage: without-coverage steps: + # ISOLATION FIX: Create unique workspace for this job to prevent collisions + - name: Create isolated workspace + run: | + JOB_TMP=$(mktemp -d -t ci-${GITHUB_REPOSITORY##*/}-${GITHUB_JOB}-${GITHUB_RUN_ID}-XXXXXX) + echo "JOB_TMP_DIR=$JOB_TMP" >> $GITHUB_ENV + echo "BUILD_ID=${GITHUB_REPOSITORY##*/}-${GITHUB_JOB}-${GITHUB_RUN_ID}" >> $GITHUB_ENV + echo "Created isolated workspace: $JOB_TMP" + + # ISOLATION FIX: Clean any leftover state from previous jobs on this runner + - name: Clean runner state + run: | + sudo rm -rf /tmp/ci-* /tmp/test ${JOB_TMP_DIR}/opt/persistent ${JOB_TMP_DIR}/opt/secure ${JOB_TMP_DIR}/lib/rdk /run/media ${JOB_TMP_DIR}/run/sda* 2>/dev/null || true + sudo rm -f /opt/*.conf ${JOB_TMP_DIR}/etc/device.properties ${JOB_TMP_DIR}/etc/dcm.properties 2>/dev/null || true + echo "Runner state cleaned" + - name: Set up cache # Cache Thunder/ThunderInterfaces. # https://github.com/actions/cache @@ -63,7 +78,7 @@ jobs: !thunder/install/usr/lib/pkgconfig/gtest.pc !thunder/install/usr/lib/pkgconfig/gtest_main.pc !thunder/install/usr/lib/wpeframework/plugins - key: ${{ runner.os }}-${{ env.THUNDER_REF }}-${{ env.INTERFACES_REF }}-4 + key: ${{ runner.os }}-${{ github.repository }}-${{ github.job }}-${{ env.THUNDER_REF }}-${{ env.INTERFACES_REF }}-${{ matrix.compiler }}-${{ matrix.coverage }}-v5 - name: Set up Python uses: actions/setup-python@v4 @@ -138,7 +153,7 @@ jobs: with: repository: rdkcentral/entservices-casting path: entservices-casting - ref: develop + ref: fix/ci-job-isolation-parallel-execution - name: Checkout googletest if: steps.cache.outputs.cache-hit != 'true' @@ -523,93 +538,80 @@ jobs: && cmake --install build/entservices-testframework + # ISOLATION FIX: Use job-specific temp directory instead of shared system paths - name: Set up files run: > - sudo mkdir -p -m 777 - /tmp/test/testApp/etc/apps - /opt/persistent - /opt/secure - /opt/secure/reboot - /opt/secure/persistent - /opt/secure/persistent/System - /opt/logs - /lib/rdk - /run/media/sda1/logs/PreviousLogs - /run/sda1/UsbTestFWUpdate - /run/sda1/UsbProdFWUpdate - /run/sda2 - /var/run/wpa_supplicant - /tmp/bus/usb/devices/100-123 - /tmp/bus/usb/devices/101-124 - /tmp/block/sda/device - /tmp/block/sdb/device - /dev/disk/by-id - /dev - && - if [ ! -f mknod /dev/sda c 240 0 ]; then mknod /dev/sda c 240 0; fi && - if [ ! -f mknod /dev/sda1 c 240 0 ]; then mknod /dev/sda1 c 240 0; fi && - if [ ! -f mknod /dev/sda2 c 240 0 ]; then mknod /dev/sda2 c 240 0; fi && - if [ ! -f mknod /dev/sdb c 240 0 ]; then mknod /dev/sdb c 240 0; fi && - if [ ! -f mknod /dev/sdb1 c 240 0 ]; then mknod /dev/sdb1 c 240 0; fi && - if [ ! -f mknod /dev/sdb2 c 240 0 ]; then mknod /dev/sdb2 c 240 0; fi - && - sudo touch - /tmp/test/testApp/etc/apps/testApp_package.json - /opt/rdk_maintenance.conf - /opt/persistent/timeZoneDST - /opt/standbyReason.txt - /opt/tmtryoptout - /opt/fwdnldstatus.txt - /opt/dcm.properties - /etc/device.properties - /etc/dcm.properties - /etc/authService.conf - /version.txt - /run/media/sda1/logs/PreviousLogs/logFile.txt - /run/sda1/HSTP11MWR_5.11p5s1_VBN_sdy.bin - /run/sda1/UsbTestFWUpdate/HSTP11MWR_3.11p5s1_VBN_sdy.bin - /run/sda1/UsbProdFWUpdate/HSTP11MWR_4.11p5s1_VBN_sdy.bin - /lib/rdk/getMaintenanceStartTime.sh - /tmp/opkg.conf - /tmp/bus/usb/devices/100-123/serial - /tmp/bus/usb/devices/101-124/serial - /tmp/block/sda/device/vendor - /tmp/block/sda/device/model - /tmp/block/sdb/device/vendor - /tmp/block/sdb/device/model + mkdir -p -m 777 + ${JOB_TMP_DIR}/test/testApp/etc/apps + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/persistent + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/secure + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/secure/reboot + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/secure/persistent + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/secure/persistent/System + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/logs + ${JOB_TMP_DIR}${JOB_TMP_DIR}/lib/rdk + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/media/sda1/logs/PreviousLogs + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/sda1/UsbTestFWUpdate + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/sda1/UsbProdFWUpdate + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/sda2 + ${JOB_TMP_DIR}${JOB_TMP_DIR}/var/run/wpa_supplicant + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/bus/usb/devices/100-123 + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/bus/usb/devices/101-124 + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sda/device + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sdb/device + ${JOB_TMP_DIR}${JOB_TMP_DIR}/dev/disk/by-id + ${JOB_TMP_DIR}/dev && - sudo chmod -R 777 - /opt/rdk_maintenance.conf - /opt/persistent/timeZoneDST - /opt/standbyReason.txt - /opt/tmtryoptout - /opt/fwdnldstatus.txt - /opt/dcm.properties - /etc/device.properties - /etc/dcm.properties - /etc/authService.conf - /version.txt - /lib/rdk/getMaintenanceStartTime.sh - /tmp/opkg.conf - /tmp/bus/usb/devices/100-123/serial - /tmp/block/sda/device/vendor - /tmp/block/sda/device/model - /tmp/bus/usb/devices/101-124/serial - /tmp/block/sdb/device/vendor - /tmp/block/sdb/device/model - && - cd /dev/disk/by-id/ - && - sudo ln -s ../../sda /dev/disk/by-id/usb-Generic_Flash_Disk_B32FD507-0 - && - sudo ln -s ../../sdb /dev/disk/by-id/usb-JetFlash_Transcend_16GB_UEUIRCXT-0 + touch + ${JOB_TMP_DIR}/test/testApp/etc/apps/testApp_package.json + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/rdk_maintenance.conf + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/persistent/timeZoneDST + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/standbyReason.txt + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/tmtryoptout + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/fwdnldstatus.txt + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/dcm.properties + ${JOB_TMP_DIR}${JOB_TMP_DIR}/etc/device.properties + ${JOB_TMP_DIR}${JOB_TMP_DIR}/etc/dcm.properties + ${JOB_TMP_DIR}${JOB_TMP_DIR}/etc/authService.conf + ${JOB_TMP_DIR}${JOB_TMP_DIR}/version.txt + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/media/sda1/logs/PreviousLogs/logFile.txt + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/sda1/HSTP11MWR_5.11p5s1_VBN_sdy.bin + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/sda1/UsbTestFWUpdate/HSTP11MWR_3.11p5s1_VBN_sdy.bin + ${JOB_TMP_DIR}${JOB_TMP_DIR}/run/sda1/UsbProdFWUpdate/HSTP11MWR_4.11p5s1_VBN_sdy.bin + ${JOB_TMP_DIR}${JOB_TMP_DIR}/lib/rdk/getMaintenanceStartTime.sh + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/opkg.conf + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/bus/usb/devices/100-123/serial + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/bus/usb/devices/101-124/serial + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sda/device/vendor + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sda/device/model + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sdb/device/vendor + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sdb/device/model && - ls -l /dev/disk/by-id/usb-Generic_Flash_Disk_B32FD507-0 + chmod -R 777 + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/rdk_maintenance.conf + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/persistent/timeZoneDST + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/standbyReason.txt + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/tmtryoptout + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/fwdnldstatus.txt + ${JOB_TMP_DIR}${JOB_TMP_DIR}/opt/dcm.properties + ${JOB_TMP_DIR}${JOB_TMP_DIR}/etc/device.properties + ${JOB_TMP_DIR}${JOB_TMP_DIR}/etc/dcm.properties + ${JOB_TMP_DIR}${JOB_TMP_DIR}/etc/authService.conf + ${JOB_TMP_DIR}${JOB_TMP_DIR}/version.txt + ${JOB_TMP_DIR}${JOB_TMP_DIR}/lib/rdk/getMaintenanceStartTime.sh + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/opkg.conf + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/bus/usb/devices/100-123/serial + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sda/device/vendor + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sda/device/model + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/bus/usb/devices/101-124/serial + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sdb/device/vendor + ${JOB_TMP_DIR}${JOB_TMP_DIR}/tmp/block/sdb/device/model && - ls -l /dev/disk/by-id/usb-JetFlash_Transcend_16GB_UEUIRCXT-0 + echo "Test files created in isolated workspace: ${JOB_TMP_DIR}" - name: Run unit tests without valgrind run: > + export TEST_ROOT_DIR=${JOB_TMP_DIR} PATH=$GITHUB_WORKSPACE/install/usr/bin:${PATH} LD_LIBRARY_PATH=$GITHUB_WORKSPACE/install/usr/lib:$GITHUB_WORKSPACE/install/usr/lib/wpeframework/plugins:${LD_LIBRARY_PATH} GTEST_OUTPUT="json:$(pwd)/rdkL1TestResults.json" @@ -620,6 +622,7 @@ jobs: - name: Run unit tests with valgrind if: ${{ !env.ACT }} run: > + export TEST_ROOT_DIR=${JOB_TMP_DIR} PATH=$GITHUB_WORKSPACE/install/usr/bin:${PATH} LD_LIBRARY_PATH=$GITHUB_WORKSPACE/install/usr/lib:$GITHUB_WORKSPACE/install/usr/lib/wpeframework/plugins:${LD_LIBRARY_PATH} GTEST_OUTPUT="json:$(pwd)/rdkL1TestResults.json" @@ -670,4 +673,13 @@ jobs: rdkL1TestResultsWithoutValgrind.json rdkL1TestResultsWithValgrind.json if-no-files-found: warn + + # ISOLATION FIX: Cleanup isolated workspace + - name: Cleanup isolated workspace + if: always() + run: | + if [ -n "${JOB_TMP_DIR}" ] && [ -d "${JOB_TMP_DIR}" ]; then + rm -rf "${JOB_TMP_DIR}" + echo "Cleaned up isolated workspace: ${JOB_TMP_DIR}" + fi