Skip to content

m6w6/pecl-ci

Repository files navigation

pecl-ci

These few lines of code support building and testing PHP extensions on CI.

Usage

First, we'll add this repo to our extension as submodule:

git submodule add -n pecl-ci https://github.com/m6w6/pecl-ci.git scripts/ci
git submodule update --init

Let's build a .travis.ymlby example. We'll use a simple PHP script, e.g. gen_travis_yml.php, which will generate the configuration for us:

#!/usr/bin/env php
# file generated by gen_travis_yml.php, do not edit!

# use the container infrastructure
sudo: false

# we want to build a C library
language: c

# use the system's PHP to run this script
addons:
  apt:
    packages:
      - php5-cli
      - php-pear

# now we'll specify the build matrix environment
env:
<?php

# instantiate the generator
$gen = include "scripts/ci/gen-matrix.php";

# generate the matrix
$env = $gen([
  # the latest releases of minor versions we want to build against
  "PHP" => ["5.4", "5.5", "5.6"],
  # test debug and non-debug builds
  "enable_debug",
  # test threadsafe and non-threadsafe builds
  "enable_maintainer_zts",
  # test with ext/json enabled an disabled
  "enable_json",
  # always build with iconv support
  "with_iconv" => ["yes"],
]);

# output the build matrix
foreach ($env as $e) {
  printf("  - %s\n", $e);
}

?>

before_script:
  # build the matrix' PHP version
  - make -f scripts/ci/Makefile php
  # build the extension, the PECL variable expects the extension name 
  # and optionally the soname and a specific version of the extension
  # separeated by double colon, e.g. PECL=myext:ext:1.7.5
  - make -f scripts/ci/Makefile ext PECL=myext

script:
  # run the PHPT test suite
  - make -f scripts/ci/Makefile test

That's it, more TBD.

About

Support bits for testing PECL extensions on Travis CI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published