feat: generate relup tarball

To generate a tarball, tag the release and then:

```
make emqx-enterprise-relup
```
This commit is contained in:
Shawn 2024-05-24 19:09:17 +08:00
parent c8258cebe8
commit e9163f2752
2 changed files with 3 additions and 32 deletions

33
build
View File

@ -213,37 +213,8 @@ make_elixir_rel() {
## extract previous version .tar.gz files to _build/$PROFILE/rel/emqx before making relup ## extract previous version .tar.gz files to _build/$PROFILE/rel/emqx before making relup
make_relup() { make_relup() {
local rel_dir="_build/$PROFILE/rel/emqx" ./rebar3 emqx relup_gen --relup-dir=./relup
local name_pattern make rel -C _build/default/plugins/emqx_relup
name_pattern="${PROFILE}-$(./pkg-vsn.sh "$PROFILE" --vsn_matcher --long)"
local releases=()
mkdir -p _upgrade_base
while read -r tgzfile ; do
local base_vsn
base_vsn="$(echo "$tgzfile" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc)\.[0-9])?(-[0-9a-f]{8})?" | head -1)"
## we have to create tmp dir to untar old tgz, as `tar --skip-old-files` is not supported on all plantforms
local tmp_dir
tmp_dir="$(mktemp -d -t emqx.XXXXXXX)"
$TAR -C "$tmp_dir" -zxf "$tgzfile"
mkdir -p "${rel_dir}/releases/"
cp -npr "$tmp_dir/releases"/* "${rel_dir}/releases/"
## There is for some reason a copy of the '$PROFILE.rel' file to releases dir,
## the content is duplicated to releases/5.0.0/$PROFILE.rel.
## This file seems to be useless, but yet confusing as it does not change after upgrade/downgrade
## Hence we force delete this file.
rm -f "${rel_dir}/releases/${PROFILE}.rel"
mkdir -p "${rel_dir}/lib/"
cp -npr "$tmp_dir/lib"/* "${rel_dir}/lib/"
rm -rf "$tmp_dir"
releases+=( "$base_vsn" )
done < <("$FIND" _upgrade_base -maxdepth 1 -name "${name_pattern}.tar.gz" -type f)
if [ ${#releases[@]} -eq 0 ]; then
log "No upgrade base found, relup ignored"
return 0
fi
RELX_BASE_VERSIONS="$(IFS=, ; echo "${releases[*]}")"
export RELX_BASE_VERSIONS
./rebar3 as "$PROFILE" relup --relname emqx --relvsn "${PKG_VSN}"
} }
cp_dyn_libs() { cp_dyn_libs() {

View File

@ -184,7 +184,7 @@ project_app_excluded("apps/" ++ AppStr, ExcludedApps) ->
plugins() -> plugins() ->
[ [
%{relup_helper, {git, "https://github.com/emqx/relup_helper", {tag, "2.1.0"}}}, {emqx_relup, {git, "https://github.com/emqx/emqx-relup.git", {branch, "main"}}},
%% emqx main project does not require port-compiler %% emqx main project does not require port-compiler
%% pin at root level for deterministic %% pin at root level for deterministic
{pc, "v1.14.0"} {pc, "v1.14.0"}