A convenience build script is included that has the ability to build the Phan
images and run basic tests against the resulting image tags. This script is
created to (eventually) be used by continuous integration, but you can run the
script locally to build your own images. Be sure to check out the environment
variables that can be tweaked at the top of the script file.
The Phan images are built using a builder Docker container based on the alpine
image. This builder image lives in the builder sub-directory of the project
and uses a mkimage-phan.bash script to generate a rootfs.tar.gz file that is
layered over a new Alpine Linux container.
The build script takes a glob of options files as an argument. Each of these
files lives in a folder that describes the version of Phan to be built. Each
line of the options file are the options that will be applied to the resulting
image. By default, we use the glob versions/**/options.
To build all the images simply run:
./buildPass version files to the build script to build specific versions:
./build versions/edge/optionsWith parallel available you can speed up building a bit:
parallel -m ./build ::: versions/**/optionsThe test for images is very simple, as Phan already runs their own comprensive
test suite. We test that the arguments are passed through to phan inside the
container, that Phan is operating in the expected location (and that file are
linked into the container correctly), and that lines from stdout are printed.
Use the test sub-command of the build utility to run tests on currently
built images.
Run tests for a single image:
./build test versions/edge/optionsRun all tests:
./build testRun tests in parallel with the parallel utility
parallel ./build test ::: versions/**/optionsThe build script also has the capability to push built images to the Docker
registry, but it hasn’t yet been tested.