|
31 | 31 | echo "Matrix JSON length: ${#json} chars" |
32 | 32 |
|
33 | 33 | # Build GITHUB_OUTPUT-style file (same as in workflow) |
| 34 | +# strategy.matrix must be an object; use include: [...] for explicit list of jobs |
| 35 | +matrix_json="{\"include\":${json}}" |
34 | 36 | if [ "$OUTPUT_FILE" = "-" ]; then |
35 | 37 | TARGET="/dev/stdout" |
36 | 38 | else |
37 | 39 | TARGET="$OUTPUT_FILE" |
38 | 40 | : > "$TARGET" |
39 | 41 | fi |
40 | 42 |
|
41 | | -printf 'matrix=%s\n' "${json//%/%25}" >> "$TARGET" |
| 43 | +printf 'matrix=%s\n' "${matrix_json//%/%25}" >> "$TARGET" |
42 | 44 | images=$(yq -r '.images | keys | .[]' config/images.yaml | sort -u) |
43 | 45 | echo "names<<NAMES_EOF" >> "$TARGET" |
44 | 46 | echo "$images" >> "$TARGET" |
|
50 | 52 |
|
51 | 53 | # Validate: simulate fromJson() on matrix (requires jq) |
52 | 54 | if command -v jq &>/dev/null; then |
53 | | - if echo "$json" | jq -e . >/dev/null 2>&1; then |
54 | | - count=$(echo "$json" | jq 'length') |
55 | | - echo "Valid JSON matrix: $count entries (fromJson would succeed)" |
| 55 | + if echo "$matrix_json" | jq -e '.include | length' >/dev/null 2>&1; then |
| 56 | + count=$(echo "$matrix_json" | jq '.include | length') |
| 57 | + echo "Valid matrix (include: $count entries); fromJson would succeed" |
56 | 58 | echo "First 3 entries:" |
57 | | - echo "$json" | jq -c '.[:3][]' |
| 59 | + echo "$matrix_json" | jq -c '.include[:3][]' |
58 | 60 | else |
59 | | - echo "WARNING: matrix value is not valid JSON (fromJson would fail)" >&2 |
60 | | - echo "Raw (first 120 chars): ${json:0:120}..." >&2 |
| 61 | + echo "WARNING: matrix value is not valid for strategy.matrix (fromJson would fail)" >&2 |
| 62 | + echo "Raw (first 120 chars): ${matrix_json:0:120}..." >&2 |
61 | 63 | fi |
62 | 64 | else |
63 | | - echo "Tip: install jq to validate that the matrix is valid JSON for fromJson()" |
| 65 | + echo "Tip: install jq to validate that the matrix is valid for fromJson()" |
64 | 66 | fi |
0 commit comments