Roave Backward Compatibility Check
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.jsonto define its dependencies - All source paths are covered by an
"autoload"section incomposer.json - Changes need to be committed to
gitto be covered. You can implement your own logic to extract sources and dependencies from a project though.
Installation
composer require --dev roave/backward-compatibility-checkInstall with Docker
You can also use Docker to run roave-backward-compatibility-check:
docker run --rm -v `pwd`:/app nyholm/roave-bc-checkUsage
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-checkThis 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.
Github action
You can use it as a Github Action like this:
.github/workflows/main.yml
on: [push]
name: Test
jobs:
roave_bc_check:
name: Roave BC Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: fetch tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Roave BC Check
uses: docker://nyholm/roave-bc-check-ga
Running manually
To generate additional documentation for changelogs:
vendor/bin/roave-backward-compatibility-check --format=markdown > results.mdDocumentation
If you need further guidance:
vendor/bin/roave-backward-compatibility-check --helpConfiguration
There are currently no configuration options available.