[Platform] Split bridges into dedicated packages #6290
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Code Quality | |
| on: | |
| push: | |
| paths-ignore: | |
| - 'src/*/doc/**' | |
| - 'src/**/*.md' | |
| pull_request: | |
| paths-ignore: | |
| - 'src/*/doc/**' | |
| - 'src/**/*.md' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| phpstan: | |
| name: PHPStan | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| php-version: [ '8.5' ] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Configure environment | |
| run: | | |
| echo COLUMNS=120 >> $GITHUB_ENV | |
| echo COMPOSER_UP='composer update --no-progress --no-interaction --no-scripts --ansi --ignore-platform-req=ext-mongodb' >> $GITHUB_ENV | |
| echo PHPSTAN='vendor/bin/phpstan' >> $GITHUB_ENV | |
| PACKAGES=$(find src/ -mindepth 2 -type f -name composer.json -not -path "*/vendor/*" -not -path "*/Bridge/*" -printf '%h\n' | sed 's/^src\///' | grep -Ev "examples" | sort | tr '\n' ' ') | |
| echo "Packages: $PACKAGES" | |
| echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: ${{ matrix.php-version }} | |
| - name: Get composer cache directory | |
| id: composer-cache | |
| run: | | |
| echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
| - name: Cache packages dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.composer-cache.outputs.dir }} | |
| key: ${{ runner.os }}-composer-packages-${{ matrix.php-version }}-${{ hashFiles('src/**/composer.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer-packages-${{ matrix.php-version }} | |
| - name: Install root dependencies | |
| uses: ramsey/composer-install@v3 | |
| - name: Build root packages | |
| run: php .github/build-packages.php | |
| - name: Run PHPStan on examples | |
| run: | | |
| cd examples/ && $COMPOSER_UP && ../link && $PHPSTAN | |
| - name: Run PHPStan on demo | |
| run: | | |
| cd demo/ && $COMPOSER_UP && ../link && $PHPSTAN | |
| - name: Run PHPStan on packages | |
| run: | | |
| source .github/workflows/.utils.sh | |
| echo "$PACKAGES" | xargs -n1 | parallel -j +3 "_run_task {} '(cd src/{} && $COMPOSER_UP && $PHPSTAN)'" | |
| - name: Cleanup package vendor directories | |
| run: find src/ -maxdepth 2 -type d -name vendor -exec rm -rf {} + 2>/dev/null || true | |
| - name: Run PHPStan on store bridges | |
| run: | | |
| source .github/workflows/.utils.sh | |
| BRIDGES=$(find src/store/src/Bridge/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort | tr '\n' ' ') | |
| echo "Bridges: $BRIDGES" | |
| echo "$BRIDGES" | xargs -n1 | parallel -j +3 "_run_task {} '(cd src/store/src/Bridge/{} && $COMPOSER_UP && $PHPSTAN)'" | |
| - name: Cleanup store bridge vendor directories | |
| run: find src/store/src/Bridge/ -maxdepth 2 -type d -name vendor -exec rm -rf {} + 2>/dev/null || true | |
| - name: Run PHPStan on tool bridges | |
| run: | | |
| source .github/workflows/.utils.sh | |
| BRIDGES=$(find src/agent/src/Bridge/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort | tr '\n' ' ') | |
| echo "Bridges: $BRIDGES" | |
| echo "$BRIDGES" | xargs -n1 | parallel -j +3 "_run_task {} '(cd src/agent/src/Bridge/{} && $COMPOSER_UP && $PHPSTAN)'" | |
| - name: Cleanup tool bridge vendor directories | |
| run: find src/agent/src/Bridge/ -maxdepth 2 -type d -name vendor -exec rm -rf {} + 2>/dev/null || true | |
| - name: Run PHPStan on platform bridges | |
| run: | | |
| # Platform bridges run SEQUENTIALLY because they depend on symfony/ai-platform | |
| # which is in the same directory tree. Running in parallel causes recursive vendor copies | |
| # when bridge A's vendor/symfony/ai-platform includes bridge B's vendor (if B finished first). | |
| source .github/workflows/.utils.sh | |
| BRIDGES=$(find src/platform/src/Bridge/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort | tr '\n' ' ') | |
| echo "Bridges: $BRIDGES" | |
| for BRIDGE in $BRIDGES; do | |
| _run_task "$BRIDGE" "(cd src/platform/src/Bridge/$BRIDGE && $COMPOSER_UP && $PHPSTAN && rm -rf vendor)" | |
| done |