build(relup): update build script for support relup
This commit is contained in:
parent
958143f7a9
commit
6595d53962
|
@ -46,3 +46,4 @@ emqx_dialyzer_*_plt
|
||||||
dist.zip
|
dist.zip
|
||||||
scripts/git-token
|
scripts/git-token
|
||||||
etc/*.seg
|
etc/*.seg
|
||||||
|
_upgrade_base/
|
||||||
|
|
8
Makefile
8
Makefile
|
@ -1,5 +1,5 @@
|
||||||
$(shell $(CURDIR)/scripts/git-hooks-init.sh)
|
$(shell $(CURDIR)/scripts/git-hooks-init.sh)
|
||||||
REBAR_VERSION = 3.14.3-emqx-6
|
REBAR_VERSION = 3.14.3-emqx-7
|
||||||
REBAR = $(CURDIR)/rebar3
|
REBAR = $(CURDIR)/rebar3
|
||||||
BUILD = $(CURDIR)/build
|
BUILD = $(CURDIR)/build
|
||||||
SCRIPTS = $(CURDIR)/scripts
|
SCRIPTS = $(CURDIR)/scripts
|
||||||
|
@ -111,15 +111,17 @@ xref: $(REBAR)
|
||||||
dialyzer: $(REBAR)
|
dialyzer: $(REBAR)
|
||||||
@$(REBAR) as check dialyzer
|
@$(REBAR) as check dialyzer
|
||||||
|
|
||||||
|
COMMON_DEPS := $(REBAR) get-dashboard $(CONF_SEGS)
|
||||||
|
|
||||||
## rel target is to create release package without relup
|
## rel target is to create release package without relup
|
||||||
.PHONY: $(REL_PROFILES:%=%-rel) $(PKG_PROFILES:%=%-rel)
|
.PHONY: $(REL_PROFILES:%=%-rel) $(PKG_PROFILES:%=%-rel)
|
||||||
$(REL_PROFILES:%=%-rel) $(PKG_PROFILES:%=%-rel): $(REBAR) get-dashboard $(CONF_SEGS)
|
$(REL_PROFILES:%=%-rel) $(PKG_PROFILES:%=%-rel): $(COMMON_DEPS)
|
||||||
@$(BUILD) $(subst -rel,,$(@)) rel
|
@$(BUILD) $(subst -rel,,$(@)) rel
|
||||||
|
|
||||||
## relup target is to create relup instructions
|
## relup target is to create relup instructions
|
||||||
.PHONY: $(REL_PROFILES:%=%-relup)
|
.PHONY: $(REL_PROFILES:%=%-relup)
|
||||||
define gen-relup-target
|
define gen-relup-target
|
||||||
$1-relup: $1-rel
|
$1-relup: $(COMMON_DEPS)
|
||||||
@$(BUILD) $1 relup
|
@$(BUILD) $1 relup
|
||||||
endef
|
endef
|
||||||
ALL_ZIPS = $(REL_PROFILES)
|
ALL_ZIPS = $(REL_PROFILES)
|
||||||
|
|
42
build
42
build
|
@ -63,41 +63,47 @@ log() {
|
||||||
}
|
}
|
||||||
|
|
||||||
make_rel() {
|
make_rel() {
|
||||||
./rebar3 as "$PROFILE" tar
|
# shellcheck disable=SC1010
|
||||||
|
./rebar3 as "$PROFILE" do release,tar
|
||||||
}
|
}
|
||||||
|
|
||||||
## unzip previous version .zip files to _build/$PROFILE/rel/emqx/releases before making relup
|
## unzip previous version .zip files to _build/$PROFILE/rel/emqx/releases before making relup
|
||||||
make_relup() {
|
make_relup() {
|
||||||
|
local lib_dir="_build/$PROFILE/rel/emqx/lib"
|
||||||
local releases_dir="_build/$PROFILE/rel/emqx/releases"
|
local releases_dir="_build/$PROFILE/rel/emqx/releases"
|
||||||
|
mkdir -p "$lib_dir" "$releases_dir"
|
||||||
local releases=()
|
local releases=()
|
||||||
if [ -d "$releases_dir" ]; then
|
if [ -d "$releases_dir" ]; then
|
||||||
while read -r dir; do
|
while read -r zip; do
|
||||||
local version
|
local base_vsn
|
||||||
version="$(basename "$dir")"
|
base_vsn="$(echo "$zip" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+(-[0-9a-e]{8})?")"
|
||||||
# skip current version
|
if [ ! -d "$releases_dir/$base_vsn" ]; then
|
||||||
if [ "$version" != "$PKG_VSN" ]; then
|
local tmp_dir
|
||||||
releases+=( "$version" )
|
tmp_dir="$(mktemp -d -t emqx.XXXXXXX)"
|
||||||
|
unzip -q "$zip" "emqx/releases/*" -d "$tmp_dir"
|
||||||
|
unzip -q "$zip" "emqx/lib/*" -d "$tmp_dir"
|
||||||
|
cp -r -n "$tmp_dir/emqx/releases"/* "$releases_dir"
|
||||||
|
cp -r -n "$tmp_dir/emqx/lib"/* "$lib_dir"
|
||||||
|
rm -rf "$tmp_dir"
|
||||||
fi
|
fi
|
||||||
done < <(find "_build/$PROFILE/rel/emqx/releases" -maxdepth 1 -name '*.*.*' -type d)
|
releases+=( "$base_vsn" )
|
||||||
|
done < <(find _upgrade_base -maxdepth 1 -name "*$PROFILE-$SYSTEM*-$ARCH.zip" -type f)
|
||||||
fi
|
fi
|
||||||
if [ ${#releases[@]} -eq 0 ]; then
|
if [ ${#releases[@]} -eq 0 ]; then
|
||||||
log "No previous release found, relup ignored"
|
log "No upgrade base found, relup ignored"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
if [ ${#releases[@]} -gt 1 ]; then
|
RELX_BASE_VERSIONS="$(IFS=, ; echo "${releases[*]}")"
|
||||||
log "Found more than one previous versions in $releases_dir:"
|
export RELX_BASE_VERSIONS
|
||||||
log "${releases[@]}"
|
./rebar3 as "$PROFILE" relup --relname emqx --relvsn "${PKG_VSN}"
|
||||||
log "ERROR: So far we can not support multi base-version relup creation"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
local base_version="${releases[0]}"
|
|
||||||
# TODO: comma separate base-versions when supported
|
|
||||||
./rebar3 as "$PROFILE" relup --relname emqx --relvsn "${PKG_VSN}" --upfrom "$base_version"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## make_zip turns .tar.gz into a .zip with a slightly different name.
|
## make_zip turns .tar.gz into a .zip with a slightly different name.
|
||||||
## It assumes the .tar.gz has been built -- relies on Makefile dependency
|
## It assumes the .tar.gz has been built -- relies on Makefile dependency
|
||||||
make_zip() {
|
make_zip() {
|
||||||
|
# build the tarball again to ensure relup is included
|
||||||
|
make_rel
|
||||||
|
|
||||||
tard="/tmp/emqx_untar_${PKG_VSN}"
|
tard="/tmp/emqx_untar_${PKG_VSN}"
|
||||||
rm -rf "${tard}"
|
rm -rf "${tard}"
|
||||||
mkdir -p "${tard}/emqx"
|
mkdir -p "${tard}/emqx"
|
||||||
|
|
|
@ -28,8 +28,7 @@
|
||||||
{cover_export_enabled, true}.
|
{cover_export_enabled, true}.
|
||||||
{cover_excl_mods, [emqx_exproto_pb, emqx_exhook_pb]}.
|
{cover_excl_mods, [emqx_exproto_pb, emqx_exhook_pb]}.
|
||||||
|
|
||||||
{provider_hooks,[{pre, [{tar, {relup_helper,gen_appups}}]}
|
{provider_hooks, [{pre, [{release, {relup_helper, gen_appups}}]}]}.
|
||||||
]}.
|
|
||||||
|
|
||||||
{post_hooks,[]}.
|
{post_hooks,[]}.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue