ci: fix wasting of runtime testing resources after failed builds

Currently we're wasting roughly about 3 minutes of precious testbed time
when the firmware build CI job fails, every time. Due to increased
testing, this is no longer acceptable waste of testing resources.

During the investigation it was found out, that this is happening due to
changes introduced in commit febd8b0032fa (".gitlab: Only run tests when
TFTP_IMAGE_DOWNLOAD_URL is set"), feature which was mainly introduced to
allow testing of externally build firmware images inside SoftAtHome for
previous, pre-2024 contribution delivery workflow. This is no longer
being used.

So lets fix it, but removing of TFTP_IMAGE_DOWNLOAD_URL feature. If we
need this feature again, it should be implemented in a different way,
avoiding wasting of the testbed resources after failed build.

Additionally, we need to change `rules: - when: always` in testbed.yml,
as it would still make run the CI job, despite of the failed dependency,
resorting back to the default `on_success` when rules, where the job is
run only when no jobs in earlier stages fail.

Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
This commit is contained in:
Petr Štetiar 2025-05-03 08:44:10 +00:00
parent f451a8c425
commit ac834c9082
No known key found for this signature in database
GPG Key ID: 58EE120F30CC02D3
11 changed files with 17 additions and 92 deletions

View File

@ -75,32 +75,22 @@ coverity scan ipq807x prpl:
run test Turris Omnia initramfs: run test Turris Omnia initramfs:
allow_failure: true allow_failure: true
needs: needs: ["build test mvebu prpl security"]
- job: build test mvebu prpl security
optional: true
extends: .turris-omnia testbed extends: .turris-omnia testbed
run test Haze initramfs: run test Haze initramfs:
allow_failure: true allow_failure: true
needs: needs: ["build test ipq807x prpl security"]
- job: build test ipq807x prpl security
optional: true
extends: .prpl-haze testbed extends: .prpl-haze testbed
run test URX851-HDK-3 with system on eMMC: run test URX851-HDK-3 with system on eMMC:
needs: needs: ["build test mxl_x86_osp_tb341 mxl_wlan_hostap_ng prpl security"]
- job: build test mxl_x86_osp_tb341 mxl_wlan_hostap_ng prpl security
optional: true
extends: .urx851-hdk-3 testbed extends: .urx851-hdk-3 testbed
run test MXL25641-HDK-6 with system on eMMC: run test MXL25641-HDK-6 with system on eMMC:
needs: needs: ["build test mxl_x86_osp_tb341_v2 mxl_wlan_hostap_ng_wav700 prpl cellular security"]
- job: build test mxl_x86_osp_tb341_v2 mxl_wlan_hostap_ng_wav700 prpl cellular security
optional: true
extends: .mxl25641-hdk-6 testbed extends: .mxl25641-hdk-6 testbed
run test Freedom initramfs: run test Freedom initramfs:
needs: needs: ["build test qca_ipq95xx prpl cellular security thread"]
- job: build test qca_ipq95xx prpl cellular security thread
optional: true
extends: .wnc-freedom testbed extends: .wnc-freedom testbed

View File

@ -10,8 +10,6 @@
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH' - if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
- if: '$CI_COMMIT_TAG =~ /^prplos-v[0-9]+\.[0-9]+\.[0-9]+.*$/' - if: '$CI_COMMIT_TAG =~ /^prplos-v[0-9]+\.[0-9]+\.[0-9]+.*$/'
- when: manual - when: manual

View File

@ -5,10 +5,6 @@
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- when: manual - when: manual
variables: variables:
CDROUTER_CONFIG_WIFI_BEACON_PHY: 'ax b g n' CDROUTER_CONFIG_WIFI_BEACON_PHY: 'ax b g n'
@ -43,14 +39,9 @@
fi fi
- > - >
if [ -n "$TFTP_IMAGE_DOWNLOAD_URL" ]; then echo "Using firmware image $TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME"
echo "Downloading firmware image from $TFTP_IMAGE_DOWNLOAD_URL" cp "$TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME" "$TESTBED_TFTP_PATH"
curl "$TFTP_IMAGE_DOWNLOAD_URL" > "$TESTBED_TFTP_PATH/$TFTP_IMAGE_FILENAME"
else
echo "Using firmware image $TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME"
cp "$TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME" "$TESTBED_TFTP_PATH"
fi
- >
if [ -n "$TFTP_IMAGE_UNPACK_COMMAND" ]; then if [ -n "$TFTP_IMAGE_UNPACK_COMMAND" ]; then
echo "Running $TFTP_IMAGE_UNPACK_COMMAND" echo "Running $TFTP_IMAGE_UNPACK_COMMAND"
eval "$TFTP_IMAGE_UNPACK_COMMAND" eval "$TFTP_IMAGE_UNPACK_COMMAND"

View File

@ -1,7 +1,5 @@
.mxl25641-cdrouter: &mxl25641_cdrouter .mxl25641-cdrouter: &mxl25641_cdrouter
needs: needs: ["build test mxl_x86_osp_tb341_v2 mxl_wlan_hostap_ng_wav700 prpl cellular security"]
- job: build test mxl_x86_osp_tb341_v2 mxl_wlan_hostap_ng_wav700 prpl cellular security
optional: true
extends: extends:
- .mxl25641-hdk-6 testbed - .mxl25641-hdk-6 testbed
- .cdrouter - .cdrouter
@ -49,10 +47,6 @@ CDRouter-Wireless MXL25641-HDK-6 eMMC:
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH' - if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
- when: manual - when: manual

View File

@ -3,14 +3,8 @@
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- when: manual - when: manual
needs: needs: ["build test ipq807x prpl security"]
- job: build test ipq807x prpl security
optional: true
extends: extends:
- .prpl-haze testbed - .prpl-haze testbed
- .cdrouter - .cdrouter
@ -56,10 +50,6 @@ CDRouter-Wireless Haze initramfs:
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- when: manual - when: manual
CDRouter-UPnP-IPv46 Haze initramfs: CDRouter-UPnP-IPv46 Haze initramfs:

View File

@ -1,18 +1,12 @@
.turris-cdrouter: &turris_cdrouter .turris-cdrouter: &turris_cdrouter
allow_failure: true allow_failure: true
needs: needs: ["build test mvebu prpl security"]
- job: build test mvebu prpl security
optional: true
extends: extends:
- .turris-omnia testbed - .turris-omnia testbed
- .cdrouter - .cdrouter
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- when: manual - when: manual
CDRouter-Top-100+mDNS Turris initramfs: CDRouter-Top-100+mDNS Turris initramfs:
@ -56,10 +50,6 @@ CDRouter-Wireless Turris initramfs:
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- when: manual - when: manual
CDRouter-UPnP-IPv46 Turris initramfs: CDRouter-UPnP-IPv46 Turris initramfs:

View File

@ -1,7 +1,5 @@
.urx851-cdrouter: &urx851_cdrouter .urx851-cdrouter: &urx851_cdrouter
needs: needs: ["build test mxl_x86_osp_tb341 mxl_wlan_hostap_ng prpl security"]
- job: build test mxl_x86_osp_tb341 mxl_wlan_hostap_ng prpl security
optional: true
extends: extends:
- .urx851-hdk-3 testbed - .urx851-hdk-3 testbed
- .cdrouter - .cdrouter
@ -47,10 +45,6 @@ CDRouter-Wireless-OSPv1 URX851-HDK-3 eMMC:
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH' - if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
- when: manual - when: manual

View File

@ -1,7 +1,5 @@
.wnc-freedom: &wnc_freedom .wnc-freedom: &wnc_freedom
needs: needs: ["build test qca_ipq95xx prpl cellular security thread"]
- job: build test qca_ipq95xx prpl cellular security thread
optional: true
extends: extends:
- .wnc-freedom testbed - .wnc-freedom testbed
- .cdrouter - .cdrouter
@ -49,10 +47,6 @@ CDRouter-Wireless Freedom initramfs:
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN'
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH' - if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
- when: manual - when: manual

View File

@ -7,8 +7,6 @@
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH' - if: '$CI_COMMIT_BRANCH == $CI_DESIGNATED_BRANCH'
- when: manual - when: manual
allow_failure: true allow_failure: true

View File

@ -5,11 +5,7 @@
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never when: never
- if: '$TFTP_IMAGE_DOWNLOAD_URL =~ $TFTP_IMAGE_FILENAME_PATTERN' - when: on_success
when: always
- if: '$TFTP_IMAGE_DOWNLOAD_URL'
when: never
- when: always
variables: variables:
DUT_WAN_INTERFACE: eth1 DUT_WAN_INTERFACE: eth1
TESTBED_MNG_INTERFACE: enp1s0 TESTBED_MNG_INTERFACE: enp1s0
@ -53,14 +49,9 @@
fi fi
- > - >
if [ -n "$TFTP_IMAGE_DOWNLOAD_URL" ]; then echo "Using firmware image $TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME"
echo "Downloading firmware image from $TFTP_IMAGE_DOWNLOAD_URL" cp "$TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME" "$TESTBED_TFTP_PATH"
curl --fail "$TFTP_IMAGE_DOWNLOAD_URL" > "$TESTBED_TFTP_PATH/$TFTP_IMAGE_FILENAME"
else
echo "Using firmware image $TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME"
cp "$TFTP_IMAGE_PATH/$TFTP_IMAGE_FILENAME" "$TESTBED_TFTP_PATH"
fi
- >
if [ -n "$TFTP_IMAGE_UNPACK_COMMAND" ]; then if [ -n "$TFTP_IMAGE_UNPACK_COMMAND" ]; then
echo "Running $TFTP_IMAGE_UNPACK_COMMAND" echo "Running $TFTP_IMAGE_UNPACK_COMMAND"
eval "$TFTP_IMAGE_UNPACK_COMMAND" eval "$TFTP_IMAGE_UNPACK_COMMAND"

View File

@ -2,11 +2,6 @@ Create R alias:
$ alias R="${CRAM_REMOTE_COMMAND:-}" $ alias R="${CRAM_REMOTE_COMMAND:-}"
Skip the tests if TFTP_IMAGE_DOWNLOAD_URL is used as the mock package would be missing:
$ [ -n "$TFTP_IMAGE_DOWNLOAD_URL" ] && exit 80
[1]
Skip test on urx851-b0-dk-pon as it has real PON and thus mocking is not needed: Skip test on urx851-b0-dk-pon as it has real PON and thus mocking is not needed:
$ [ "$DUT_BOARD" = "urx851-b0-dk-pon" ] && exit 80 $ [ "$DUT_BOARD" = "urx851-b0-dk-pon" ] && exit 80