|
76 | 76 | runs-on: ubuntu-latest |
77 | 77 |
|
78 | 78 | outputs: |
79 | | - matrix: ${{ steps.filter-matrix.outputs.matrix || steps.set-packages.outputs.matrix }} |
| 79 | + matrix: ${{ steps.clean-matrix.outputs.matrix }} |
80 | 80 |
|
81 | 81 | steps: |
82 | 82 | - name: Checkout repository |
@@ -171,3 +171,51 @@ jobs: |
171 | 171 | echo "::endgroup::" |
172 | 172 | echo "" |
173 | 173 | echo "matrix=$OUTPUT" >> "$GITHUB_OUTPUT" |
| 174 | +
|
| 175 | + - name: Clean matrix if no packages found |
| 176 | + if: always() |
| 177 | + id: clean-matrix |
| 178 | + shell: bash |
| 179 | + env: |
| 180 | + MATRIX: ${{ steps.filter-matrix.outputs.matrix || steps.set-packages.outputs.matrix }} |
| 181 | + DEFAULT_CONFIG: ${{ inputs.default-config }} |
| 182 | + run: | |
| 183 | + echo "Checking if matrix has any packages..." |
| 184 | + |
| 185 | + # Check if packages array is empty |
| 186 | + PACKAGES_COUNT=$(echo "$MATRIX" | jq '.packages | length') |
| 187 | + |
| 188 | + echo "Packages count: $PACKAGES_COUNT" |
| 189 | + |
| 190 | + if [ "$PACKAGES_COUNT" -eq 0 ]; then |
| 191 | + echo "No packages found - removing default-config dimensions and packages, keeping include only" |
| 192 | + # Keep only include, remove packages and all default-config dimensions |
| 193 | + OUTPUT=$(echo "$MATRIX" | jq '{include: .include}') |
| 194 | + else |
| 195 | + echo "Packages found - keeping matrix as-is" |
| 196 | + OUTPUT="$MATRIX" |
| 197 | + fi |
| 198 | + |
| 199 | + # Remove include if it's an empty array (regardless of packages count) |
| 200 | + INCLUDE_COUNT=$(echo "$OUTPUT" | jq '.include | length') |
| 201 | + echo "Include count: $INCLUDE_COUNT" |
| 202 | + |
| 203 | + if [ "$INCLUDE_COUNT" -eq 0 ]; then |
| 204 | + echo "Include array is empty - removing it" |
| 205 | + OUTPUT=$(echo "$OUTPUT" | jq 'del(.include)') |
| 206 | + fi |
| 207 | + |
| 208 | + # Check if we have an empty JSON object and return empty string instead |
| 209 | + OBJECT_KEYS=$(echo "$OUTPUT" | jq 'keys | length') |
| 210 | + if [ "$OBJECT_KEYS" -eq 0 ]; then |
| 211 | + echo "Matrix is completely empty - returning empty string" |
| 212 | + OUTPUT='' |
| 213 | + fi |
| 214 | + |
| 215 | + echo "::group::Final matrix JSON" |
| 216 | + echo "$OUTPUT" | jq . |
| 217 | + echo "::endgroup::" |
| 218 | + echo "" |
| 219 | + # Ensure compact JSON output for GitHub Actions |
| 220 | + COMPACT_OUTPUT=$(echo "$OUTPUT" | jq -c .) |
| 221 | + echo "matrix=$COMPACT_OUTPUT" >> "$GITHUB_OUTPUT" |
0 commit comments