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