← Back to team overview

canonical-ubuntu-qa team mailing list archive

[Merge] qa-jenkins-jobs:cache-images-rf-jobs into qa-jenkins-jobs:master

 

Tim Andersson has proposed merging qa-jenkins-jobs:cache-images-rf-jobs into qa-jenkins-jobs:master.

Requested reviews:
  Canonical Platform QA Team (canonical-platform-qa)

For more details, see:
https://code.launchpad.net/~canonical-platform-qa/qa-jenkins-jobs/+git/qa-jenkins-jobs/+merge/486319

cache desktop isos 
-- 
Your team Canonical Platform QA Team is requested to review the proposed merge of qa-jenkins-jobs:cache-images-rf-jobs into qa-jenkins-jobs:master.
diff --git a/jobs/robot-framework-iso-testing/jobs.yaml b/jobs/robot-framework-iso-testing/jobs.yaml
index e47e9aa..02e2ea9 100644
--- a/jobs/robot-framework-iso-testing/jobs.yaml
+++ b/jobs/robot-framework-iso-testing/jobs.yaml
@@ -71,17 +71,40 @@
             command: |
                 #!/bin/bash
                 set -ex
-                # determine ISO url
                 development_release=$(distro-info --devel || echo UNKNOWN)
                 if [ {release} = $development_release ]; then
-                    ISO_URL="https://cdimage.ubuntu.com/daily-live/current/{release}-desktop-amd64.iso";
+                    BASE_URL="https://cdimage.ubuntu.com/daily-live/current/";
                 else
-                    ISO_URL="https://cdimage.ubuntu.com/{release}/daily-live/current/{release}-desktop-amd64.iso";
+                    BASE_URL="https://cdimage.ubuntu.com/{release}/daily-live/current/";
                 fi
+                ISO_NAME="{release}-desktop-amd64.iso"
+                ISO_URL="${BASE_URL}${ISO_NAME}"
+                SHASUM_URL="${BASE_URL}SHA256SUMS"
+                SHASUM_TMP=$(mktemp)
+                CACHE_DIR="/home/ubuntu/.image_cache/{release}/"
+                mkdir -p "${CACHE_DIR}"
+                if test -f "${CACHE_DIR}${ISO_NAME}" && test -f "${CACHE_DIR}SHA256SUMS"; then
+                    wget -O "${SHASUM_TMP}" "${SHASUM_URL}"
+                    tmpdir_shasum=$(grep "${ISO_NAME}" < "${SHASUM_TMP}" | cut -d" " -f1)
+                    rm "${SHASUM_TMP}"
+                    cache_shasum=$(grep "${ISO_NAME}" < "${CACHE_DIR}SHA256SUMS" | cut -d" " -f1)
+                    if [[ "${tmpdir_shasum}" == "${cache_shasum}" ]]; then
+                        exit 0
+                    else
+                        rm "${CACHE_DIR}*"
+                    fi
+                fi
+                retry -t 3 -d 180 -- wget "${ISO_URL}" -P "${CACHE_DIR}"
+                retry -t 3 -d 180 -- wget "${SHASUM_URL}" -P "${CACHE_DIR}"
+        - shell:
+            command: |
+                #!/bin/bash
+                set -ex
                 # clone HIT and yarf
                 retry -t 3 -d 180 -- git clone -b "$HIT_BRANCH" https://oauth2:"$GH_PAT"@github.com/canonical/hardware-installer-testing.git
                 retry -t 3 -d 180 -- git clone -b main https://oauth2:"$GH_PAT"@github.com/canonical/yarf.git
                 DEBIAN_FRONTEND=noninteractive sudo apt-get install -y clang libxkbcommon-dev tesseract-ocr
+                ISO_PATH="/home/ubuntu/.image_cache/{release}/{release}-desktop-amd64.iso"
                 cd yarf/
                 sudo snap install astral-uv --classic
                 # set up venv
@@ -89,7 +112,7 @@
                 . .venv/bin/activate
                 uv pip install .[develop] -r ../hardware-installer-testing/requirements.txt
                 cd ../hardware-installer-testing
-                ./runner/spawn_and_run_test_suite.py --test-suite robot/test-cases/{release}/{test_case} --iso "$ISO_URL" --qemu-args-json ./runner/qemu-args.json --cleanup
+                ./runner/spawn_and_run_test_suite.py --test-suite robot/test-cases/{release}/{test_case} --iso "${ISO_PATH}" --qemu-args-json ./runner/qemu-args.json --cleanup-storage
     publishers:
         - archive:
             artifacts: 'hardware-installer-testing/artifacts/*'

Follow ups