mirror of
https://github.com/correl/rebar.git
synced 2024-11-23 19:19:54 +00:00
5298e93a18
To support OTP release upgrades I have added support for building upgrade packages. Support for this is included in the rebar_upgrade module, specifically generate_upgrade/2. It requires one variable to be set on the command line 'previous_release' which is the absolute path or relative path from 'rel/' to the previous release one is upgrading from. Running an upgrade will create the needed files, including a relup and result in a tarball containing the upgrade being written to 'rel/'. When done it cleans up the temporary files systools created. Usage: $ rebar generate-upgrade previous_release=/path/to/old/version This also includes a dummy application that can be used to test upgrades as well as an example. Special thanks to Daniel Reverri, Jesper Louis Andersen and Richard Jones for comments and patches. |
||
---|---|---|
.. | ||
apps/dummy | ||
rel | ||
README.md | ||
rebar.config |
Building version 0.1
rebar compile
rebar generate
mv rel/dummy rel/dummy_0.1
rebar clean
# start the release:
cd rel/dummy_0.1
bin/dummy console
erl> dummy_server:get_state().
erl> dummy_server:set_state(123).
erl> dummy_server:get_state().
Building version 0.2
# Now, in another terminal we prepare an upgrade..
# change release version numbers from 0.1 to 0.2 in
$EDITOR apps/dummy/src/dummy.app.src
$EDITOR rel/reltool.config
rebar compile
rebar generate
rebar generate-upgrade previous_release=dummy_0.1
tar -zvtf rel/dummy_0.2.tar.gz
Deploying with release_handler
mv rel/dummy_0.2.tar.gz rel/dummy_0.1/releases/
# Now use release_handler in the running erlang console for the deploy:
erl> release_handler:unpack_release("dummy_0.2").
erl> release_handler:install_release("0.2").
erl> release_handler:make_permanent("0.2").
erl> release_handler:which_releases().
erl> dummy_server:get_state().