Skip to content

Commit 3dd72d7

Browse files
committed
Split platform bridges into dedicated job to avoid 256 matrix limit
- Remove reverse from bridges array - Keep only store and tool bridges in bridge job - Add separate platform-bridge job with its own matrix - Platform bridges need build-packages.php for inter-dependencies
1 parent 9ed2c00 commit 3dd72d7

File tree

1 file changed

+68
-6
lines changed

1 file changed

+68
-6
lines changed

.github/workflows/unit-tests.yaml

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ jobs:
2626
packages-include: ${{ steps.set-matrix.outputs.packages-include }}
2727
bridges: ${{ steps.set-matrix.outputs.bridges }}
2828
bridges-include: ${{ steps.set-matrix.outputs.bridges-include }}
29+
platform-bridges: ${{ steps.set-matrix.outputs.platform-bridges }}
30+
platform-bridges-include: ${{ steps.set-matrix.outputs.platform-bridges-include }}
2931
steps:
3032
- name: Checkout
3133
uses: actions/checkout@v6
@@ -65,14 +67,12 @@ jobs:
6567
')
6668
echo "packages-include=$PACKAGES_INCLUDE" >> $GITHUB_OUTPUT
6769
68-
# Bridges (store, tool, and platform)
70+
# Bridges (store and tool)
6971
STORE_BRIDGES=$(ls -1 src/store/src/Bridge/ | sort \
7072
| jq -R -s -c 'split("\n") | map(select(length > 0)) | map({component: "store", type: "Store", bridge: .})')
7173
TOOL_BRIDGES=$(ls -1 src/agent/src/Bridge/ | sort \
7274
| jq -R -s -c 'split("\n") | map(select(length > 0)) | map({component: "agent", type: "Tool", bridge: .})')
73-
PLATFORM_BRIDGES=$(ls -1 src/platform/src/Bridge/ | sort \
74-
| jq -R -s -c 'split("\n") | map(select(length > 0)) | map({component: "platform", type: "Platform", bridge: .})')
75-
BRIDGES=$(jq -n -c --argjson store "$STORE_BRIDGES" --argjson tool "$TOOL_BRIDGES" --argjson platform "$PLATFORM_BRIDGES" '$store + $tool + $platform | reverse')
75+
BRIDGES=$(jq -n -c --argjson store "$STORE_BRIDGES" --argjson tool "$TOOL_BRIDGES" '$store + $tool')
7676
echo "bridges=$BRIDGES" >> $GITHUB_OUTPUT
7777
7878
# Generate bridge includes (lowest, Symfony 7.4, Symfony 8.0)
@@ -88,12 +88,33 @@ jobs:
8888
')
8989
echo "bridges-include=$BRIDGES_INCLUDE" >> $GITHUB_OUTPUT
9090
91+
# Platform bridges (separate job to avoid 256 matrix limit)
92+
PLATFORM_BRIDGES=$(ls -1 src/platform/src/Bridge/ | sort \
93+
| jq -R -s -c 'split("\n") | map(select(length > 0)) | map({bridge: .})')
94+
echo "platform-bridges=$PLATFORM_BRIDGES" >> $GITHUB_OUTPUT
95+
96+
# Generate platform bridge includes (lowest, Symfony 7.4, Symfony 8.0)
97+
PLATFORM_BRIDGES_INCLUDE=$(echo "$PLATFORM_BRIDGES" | jq -c '
98+
. as $bridges |
99+
# lowest deps with PHP 8.2
100+
($bridges | map(. + {"php-version": "8.2", "dependency-version": "lowest"})) +
101+
# Symfony 7.4 LTS with PHP 8.2
102+
($bridges | map(. + {"php-version": "8.2", "symfony-version": "7.4.*"})) +
103+
# Symfony 8.0 with PHP 8.5
104+
($bridges | map(. + {"php-version": "8.5", "symfony-version": "8.0.*"}))
105+
| map({bridge: {bridge: .bridge}} + (. | del(.bridge)))
106+
')
107+
echo "platform-bridges-include=$PLATFORM_BRIDGES_INCLUDE" >> $GITHUB_OUTPUT
108+
91109
# Pretty print for info
92110
echo "### Packages"
93111
echo "$PACKAGES" | jq .
94112
echo ""
95113
echo "### Bridges"
96114
echo "$BRIDGES" | jq .
115+
echo ""
116+
echo "### Platform Bridges"
117+
echo "$PLATFORM_BRIDGES" | jq .
97118
98119
package:
99120
name: ${{ matrix.package.type }} / ${{ matrix.package.name }} / PHP ${{ matrix.php-version }}${{ matrix.dependency-version == 'lowest' && ' / lowest' || '' }}${{ matrix.symfony-version && format(' / Symfony {0}', matrix.symfony-version) || '' }}
@@ -152,6 +173,47 @@ jobs:
152173
env:
153174
SYMFONY_REQUIRE: ${{ matrix.symfony-version || '>=7.4' }}
154175

176+
steps:
177+
- name: Checkout
178+
uses: actions/checkout@v6
179+
180+
- name: Configure environment
181+
run: |
182+
echo COLUMNS=120 >> $GITHUB_ENV
183+
[ 'lowest' = '${{ matrix.dependency-version }}' ] && echo SYMFONY_DEPRECATIONS_HELPER=weak >> $GITHUB_ENV || true
184+
185+
- name: Setup PHP
186+
uses: shivammathur/setup-php@v2
187+
with:
188+
php-version: ${{ matrix.php-version }}
189+
tools: flex
190+
extensions: ${{ env.REQUIRED_PHP_EXTENSIONS }}
191+
192+
- name: Install dependencies
193+
uses: ramsey/composer-install@v3
194+
with:
195+
working-directory: src/${{ matrix.bridge.component }}/src/Bridge/${{ matrix.bridge.bridge }}
196+
dependency-versions: ${{ matrix.dependency-version || 'highest' }}
197+
198+
- name: Run PHPUnit
199+
run: cd src/${{ matrix.bridge.component }}/src/Bridge/${{ matrix.bridge.bridge }} && vendor/bin/phpunit
200+
201+
platform-bridge:
202+
name: Platform / ${{ matrix.bridge.bridge }} / PHP ${{ matrix.php-version }}${{ matrix.dependency-version == 'lowest' && ' / lowest' || '' }}${{ matrix.symfony-version && format(' / Symfony {0}', matrix.symfony-version) || '' }}
203+
needs: matrix
204+
runs-on: ubuntu-latest
205+
strategy:
206+
fail-fast: false
207+
matrix:
208+
bridge: ${{ fromJson(needs.matrix.outputs.platform-bridges) }}
209+
php-version: ['8.2', '8.5']
210+
dependency-version: ['']
211+
symfony-version: ['']
212+
include: ${{ fromJson(needs.matrix.outputs.platform-bridges-include) }}
213+
214+
env:
215+
SYMFONY_REQUIRE: ${{ matrix.symfony-version || '>=7.4' }}
216+
155217
steps:
156218
- name: Checkout
157219
uses: actions/checkout@v6
@@ -174,8 +236,8 @@ jobs:
174236
- name: Install dependencies
175237
uses: ramsey/composer-install@v3
176238
with:
177-
working-directory: src/${{ matrix.bridge.component }}/src/Bridge/${{ matrix.bridge.bridge }}
239+
working-directory: src/platform/src/Bridge/${{ matrix.bridge.bridge }}
178240
dependency-versions: ${{ matrix.dependency-version || 'highest' }}
179241

180242
- name: Run PHPUnit
181-
run: cd src/${{ matrix.bridge.component }}/src/Bridge/${{ matrix.bridge.bridge }} && vendor/bin/phpunit
243+
run: cd src/platform/src/Bridge/${{ matrix.bridge.bridge }} && vendor/bin/phpunit

0 commit comments

Comments
 (0)