$ make
Erlang.mk relies on Relx for generating releases. This chapter covers the Erlang.mk-specific bits. Consult the Relx website for more information.
Erlang.mk will create a release if it detects a Relx configuration file in the $(RELX_CONFIG) location. This defaults to $(CURDIR)/relx.config. You can override it by defining the variable before including Erlang.mk:
Relx does not need to be installed. Erlang.mk will download and build it automatically.
The Relx executable will be saved in the $(RELX) file. This location defaults to $(CURDIR)/relx and can be overriden.
You can specify additional Relx options using the RELX_OPTS
variable. For example, to enable dev_mode
:
While you can specify the output directory for the release
in the Relx options directly, Erlang.mk provides a specific
variable for it: RELX_OUTPUT_DIR
. It defaults to the _rel
directory. You can also override it:
Now that you’re all set, all you need to do is generate the release. As mentioned before, Erlang.mk will automatically generate it when it detects the $(RELX_CONFIG) file. This means the following command will also build the release:
$ make
If you need to generate the release, and only the release,
the rel
target can be used:
$ make rel
Erlang.mk always generates a tarball alongside the release,
which can be directly uploaded to a server. The tarball is
located at $(RELX_OUTPUT_DIR)/<name>/<name>-<vsn>.tar.gz
.
Erlang.mk provides a convenience function for running the release with one simple command:
$ make run
This command will also build the project and generate the release if they weren’t already. It starts the release in console mode, meaning you will also have a shell ready to use to check things as needed.
Erlang.mk provides a relup
target for generating release
upgrades. Release upgrades allow updating the code and the
state of a running release without restarting it.
Once your changes are done, you need to update the version of the application(s) that will be updated. You also need to update the version of the release.
For each application that needs to be updated, an appup file must be written. Refer to the Erlang/OTP documentation for more details.
For the purpose of this section, assume the initial release
version was 1
, and the new version is 2
. The name of the
release will be example
.
Once all this is done, you can build the tarball for the release upgrade:
$ make relup
This will create an archive at the root directory of the
release, $RELX_OUTPUT_DIR/example/example-2.tar.gz
.
Move the archive to the correct location on the running node. From the release’s root directory:
$ mkdir releases/2/ $ mv path/to/example-2.tar.gz releases/2/
Finally, upgrade the release:
$ bin/example_release upgrade "2/example_release"
Or on Windows:
$ bin/example_release.cmd upgrade "2/example_release"
Your release was upgraded!