[Platform] Split bridges into dedicated packages #6287
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 platform bridges | |
| run: | | |
| # Platform bridges must run FIRST and 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)" | |
| done | |
| - 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: 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: 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)'" |