roave / backward-compatibility-check
Tool to compare two revisions of a public API to check for BC breaks
Installs: 52 301
Dependents: 37
Suggesters: 0
Security: 0
Stars: 441
Watchers: 19
Forks: 39
Open Issues: 34
Requires
- php: ^7.4.7
- ext-json: *
- composer/composer: ^1.10.7
- nikolaposa/version: ^4.0.0
- ocramius/package-versions: ^1.8.0
- roave/better-reflection: ^4.6.1
- symfony/console: ^5.1.2
- symfony/process: ^5.1.2
- thecodingmachine/safe: ^1.1.1
- webmozart/assert: ^1.9.0
Requires (Dev)
- doctrine/coding-standard: ^8.0.0
- infection/infection: ^0.16.3
- phpunit/phpunit: ^9.2.5
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.5.5
- vimeo/psalm: ^3.11.6
- dev-master
- 5.0.x-dev
- 5.0.0
- 4.4.0
- 4.3.0
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.0
- 3.0.0
- 2.1.0
- 2.0.0
- 1.1.1
- 1.1.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-dependabot/composer/phpunit/phpunit-9.5.2
- dev-dependabot/composer/infection/infection-0.21.2
- dev-dependabot/composer/roave/better-reflection-4.12.2
- dev-named-parameter-support
- dev-feature/totally-typed
This package is auto-updated.
Last update: 2021-03-29 13:38:19 UTC
README
A tool that can be used to verify BC breaks between two versions of a PHP library.
Pre-requisites/assumptions
- Your project uses
git
- Your project uses
composer.json
to define its dependencies - All source paths are covered by an
"autoload"
section incomposer.json
- Changes need to be committed to
git
to be covered. You can implement your own logic to extract sources and dependencies from a project though.
Installation
composer require --dev roave/backward-compatibility-check
Install with Docker
You can also use Docker to run roave-backward-compatibility-check
:
docker run --rm -v `pwd`:/app nyholm/roave-bc-check
Usage
Adding to a continuous integration pipeline
The typical intended usage is to just add roave-backward-compatibility-check
to your CI build:
vendor/bin/roave-backward-compatibility-check
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
the SemVer-compliant x.y.z
format, such as 1.2.3
.
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
fetch-depth: 0
:
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:
.github/workflows/main.yml
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
Running manually
To generate additional documentation for changelogs:
vendor/bin/roave-backward-compatibility-check --format=markdown > results.md
Documentation
If you need further guidance:
vendor/bin/roave-backward-compatibility-check --help
Configuration
There are currently no configuration options available.