Skip to content

Commit 77c7a07

Browse files
committed
fix(hw): Properly group missing runners
1 parent 52c078b commit 77c7a07

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

.gitlab/scripts/gen_hw_jobs.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,11 @@ def find_sketch_test_dirs(types_filter: list[str]) -> list[tuple[str, Path]]:
8383
def load_tags_for_test(ci_json: dict, chip: str) -> set[str]:
8484
tags = set()
8585
# Global tags
86-
for key in "tags":
87-
v = ci_json.get(key)
88-
if isinstance(v, list):
89-
for e in v:
90-
if isinstance(e, str) and e.strip():
91-
tags.add(e.strip())
86+
v = ci_json.get("tags")
87+
if isinstance(v, list):
88+
for e in v:
89+
if isinstance(e, str) and e.strip():
90+
tags.add(e.strip())
9291
# Per-SoC tags
9392
soc_tags = ci_json.get("soc_tags")
9493
if isinstance(soc_tags, dict):
@@ -360,7 +359,7 @@ def main():
360359
# Discover available runners (best-effort)
361360
available_runners = list_project_runners()
362361
if not available_runners:
363-
print("[WARN] Could not enumerate project runners or none found; skipping runner-tag availability checks.")
362+
print("[WARN] Could not enumerate project runners or none found; using conservative mode for tagged groups.")
364363

365364
# Accumulate all missing-runner groups to emit a single stub job
366365
missing_groups: list[dict] = []
@@ -375,6 +374,14 @@ def main():
375374
can_schedule = True
376375
if available_runners:
377376
can_schedule = any_runner_matches(tag_list, available_runners)
377+
else:
378+
# Conservative mode when we cannot list runners: treat groups that require extra
379+
# tags beyond the SOC or 'generic' as missing-runner to avoid running on generic.
380+
assume_missing = os.environ.get("ASSUME_TAGGED_GROUPS_MISSING", "1") == "1"
381+
if assume_missing:
382+
extra = [t for t in tag_list if t not in (chip, "generic")]
383+
if extra:
384+
can_schedule = False
378385

379386
if can_schedule:
380387
job_name = f"hw-{chip}-{test_type}-{tag_suffix}"[:255]

.gitlab/workflows/hardware_tests_dynamic.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@ generate-hw-tests:
1818
before_script:
1919
- pip install PyYAML
2020
- apt-get update
21-
- apt-get install -y jq yq unzip curl
21+
- apt-get install -y jq unzip curl wget
22+
# Install mikefarah/yq (Go version) instead of kislyuk/yq (Python version)
23+
- YQ_VERSION=v4.47.2
24+
- YQ_BINARY=yq_linux_amd64
25+
- wget https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/${YQ_BINARY} -O /usr/bin/yq
26+
- chmod +x /usr/bin/yq
27+
- yq --version
2228
script:
2329
- mkdir -p ~/.arduino/tests
2430
- |
@@ -65,7 +71,7 @@ collect-hw-results:
6571
- if: $CI_PIPELINE_SOURCE == "trigger"
6672
when: always
6773
before_script:
68-
- apt-get update && apt-get install -y jq yq curl unzip
74+
- apt-get update && apt-get install -y jq curl unzip
6975
script:
7076
- bash .gitlab/scripts/get_results.sh
7177
artifacts:

.gitlab/workflows/hw_test_template.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,13 @@ hw-test-template:
3434
- echo "Pipeline ID:$PIPELINE_ID"
3535
- echo "Running hardware tests for chip:$TEST_CHIP"
3636
- apt-get update
37-
- apt-get install -y jq yq unzip curl
37+
- apt-get install -y jq unzip curl wget
38+
# Install mikefarah/yq (Go version) instead of kislyuk/yq (Python version)
39+
- YQ_VERSION=v4.47.2
40+
- YQ_BINARY=yq_linux_amd64
41+
- wget https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/${YQ_BINARY} -O /usr/bin/yq
42+
- chmod +x /usr/bin/yq
43+
- yq --version
3844
- rm -rf ~/.arduino/tests
3945
- mkdir -p ~/.arduino/tests/$TEST_CHIP
4046
- echo Fetching binaries for $TEST_CHIP $TEST_TYPE

0 commit comments

Comments
 (0)