Testing PHP extensions on Travis-CI

Posted by m6w6 on 11th August 2015 in Mike's sudden inspirations: PHP

Testing PECL extensions on Travis-CI has always been cumbersome for me; build PHP in different versions and debug/threadsafe flavors, install PECL dependencies and so on, which usually results in a mess of command line scripts, repeated for every extension.

Enter travis-pecl.

This tiny support bin comes with a Makefile and small PHP scripts to generate the build matrix and check your package.xml file. It supports building PHP in a wide variety of flavors, installing PECL dependencies from the PECL website or from bundled pharext packages and running the testsuite with a comprehensive set of commands.

Let’s look at a few commands with a properly set up environment from the test matrix:

env:  
 - PHP=5.6 enable_debug=yes with_iconv=yes enable_json=yes  

Build PHP:

make -f travis/pecl/Makefile php  

Install a PECL dependency:

make -f travis/pecl/Makefile pecl PECL=propro  

Install a PECL dependency from a pharext package, located in travis/:

make -f travis/pecl/Makefile pharext/raphf-phpng  

Build the currently checked out extension:

make -f travis/pecl/Makefile ext PECL=http  

Run the testsuite:

make -f travis/pecl/Makefile test  

Finally, check out the README and have a look at a couple of complete examples here: