g1a/composer-test-scenarios
composer.json, reducing duplication and CI complexity.composer.lock (or skips it via create-lockfile), aligning with Laravel’s dependency management needs while preserving reproducibility.SCENARIO/HIGHEST_LOWEST env vars) is directly applicable to Laravel’s CI/CD pipelines (e.g., GitHub Actions, GitLab CI), where testing across PHP versions and dependency ranges is critical.LICENSE file is valuable for enterprise Laravel projects with strict compliance requirements..scenarios.lock/, which can be version-controlled alongside Laravel’s composer.lock, mirroring Laravel’s deterministic deployment practices..scenarios.lock/) may increase repo size; mitigate by pruning unused scenarios or using Git LFS for large dependencies.symfony/console in multiple versions) may cause installation conflicts; resolve via strict version constraints or platform overrides.platform.php overrides (e.g., PHP 5.4) may break Laravel’s PHP 8.x+ requirements; enforce scenario-specific PHP versions in CI..scenarios.lock/ be fully committed or partially cached (e.g., via CI artifacts)?platform.php overrides.composer scenario:update..travis.yml provided).g1a/composer-test-scenarios to composer.json under require-dev.composer scenario:update and commit .scenarios.lock/..github/workflows/test.yml (GitHub Actions example):
jobs:
test:
strategy:
matrix:
scenario: [symfony6, symfony5]
dependencies: [lock, highest, lowest]
steps:
- uses: actions/checkout@v3
- run: composer scenario ${{ matrix.scenario }}
- run: composer test
composer-plugin-api and composer/composer versions in require-dev match Laravel’s CI environment.conflict rules in composer.json to block incompatible scenario combinations.laravel/framework:^9.0, ^8.0).composer scenario:update and commit .scenarios.lock/.main.composer scenario <name> for ad-hoc testing (e.g., composer scenario symfony6)..scenarios.lock/ updates like composer.lock (commit with dependency changes).composer scenario:update when dependencies change (similar to composer update).composer.json edits; document deprecated scenarios to avoid CI noise.composer dependency-licenses, but verify false positives (e.g., Laravel’s MIT license).composer scenario:update --verbose to diagnose lockfile generation issues.Artisan::call()").LICENSE file updates for accuracy (e.g., Laravel’s Facade licenses)..scenarios.lock/ may need Git LFS or CI caching (e.g., GitHub Actions actions/cache).composer scenario:update adds ~30–60s to composer update; mitigate by running post-merge.| Failure Type | Root Cause | Mitigation |
|---|---|---|
| Lockfile generation errors | Invalid platform.php or require |
Validate scenarios with composer validate |
| CI timeouts | Too many parallel scenario jobs | Limit matrix size or use sequential jobs |
| Dependency conflicts | Overlapping symfony/console versions |
Use conflict rules or stricter version ranges |
| Missing lockfiles | create-lockfile: false not handled |
Ensure all scenarios have lockfiles committed |
| License file corruption | composer dependency-licenses errors |
Manually verify LICENSE updates |
composer scenario <name> for local testing.How can I help you explore Laravel packages today?