Erlang.mk comes with some support for continuous integration, aimed at open source projects that need to support more than one specific Erlang/OTP release. (If you target one specific release, check the OTP version pinning section of the OTP version management chapter.)
To use the CI plugin you must first configure which versions of Erlang/OTP will be used.
At the time of writing, this is how you would test against all the most recent patch releases of Erlang/OTP 19 and above:
CI_OTP = OTP-19.0.7 OTP-19.1.6 OTP-19.2.3 OTP-19.3.6.2 OTP-20.0.4
Consult the OTP version management chapter for more information about Erlang/OTP versions and customization of the Erlang/OTP builds.
The recommended way to run the ci
target is with the option
-k
. It will ensure that tests are run for all configured
Erlang/OTP versions, even if there are errors:
$ make ci -k
The ci
target can be extended. For example to run Dialyzer
at the end of CI:
ci:: dialyze
Additional setup can be done by extending the ci-setup
target. This target is ran before testing each individual
Erlang/OTP version.
For example, to ensure dependencies are re-fetched/built before testing individual Erlang/OTP releases:
ci-setup:: distclean
Similarly, the ci-extra
target can be extended to run
extra commands after an Erlang/OTP version has been tested.