Roave Backward Compatibility Check
A tool that can be used to verify BC breaks between two versions of a PHP library.
- Your project uses
- Your project uses
composer.jsonto define its dependencies
- All source paths are covered by an
- Changes need to be committed to
gitto be covered. You can implement your own logic to extract sources and dependencies from a project though.
composer require --dev roave/backward-compatibility-check
Install with Docker
You can also use Docker to run
docker run --rm -v `pwd`:/app nyholm/roave-bc-check
Adding to a continuous integration pipeline
The typical intended usage is to just add
to your CI build:
This will automatically detect the last minor version tagged, and
compare the API against the current
HEAD. If any BC breaks are found,
the tool returns a non-zero status, which on most CI systems will cause
the build to fail.
NOTE: detecting the base version only works if you have git tags in
x.y.z format, such as
NOTE: since this tool relies on tags, you need to make sure tags are fetched
as part of your CI pipeline. For example in a GitHub action, note the use of
jobs: roave-backwards-compatibility-check: name: Roave Backwards Compatibility Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: "Install PHP" uses: shivammathur/setup-php@v2 with: coverage: "none" php-version: "7.4" # https://github.com/Roave/BackwardCompatibilityCheck/issues/283 - name: "Install dependencies" run: "composer install --no-interaction" - name: "Check for BC breaks" run: "vendor/bin/roave-backward-compatibility-check"
Nyholm Github Action
Tobias Nyholm also offers a simple GitHub action that you can use in your Github pipeline. We recommend this for most cases as it is simple to set up:
on: [push] name: Test jobs: roave-backwards-compatibility-check: name: Roave Backwards Compatibility Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: "Check for BC breaks" uses: docker://nyholm/roave-bc-check-ga
To generate additional documentation for changelogs:
vendor/bin/roave-backward-compatibility-check --format=markdown > results.md
If you need further guidance:
There are currently no configuration options available.