Explorar el Código

fix: remove the extra level of 'emqx' dir from .tar.gz

Shawn hace 3 años
padre
commit
eea9bd90b4

+ 2 - 1
.ci/fvt_tests/relup.lux

@@ -22,7 +22,8 @@
 
 [shell emqx]
     !cd $PACKAGE_PATH
-    !tar -zxf ${PROFILE}-$(echo $old_vsn | sed  -r 's/[v|e]//g')-*-ubuntu20.04-amd64.tar.gz
+    mkdir -p emqx
+    !tar -C emqx -zxf ${PROFILE}-$(echo $old_vsn | sed  -r 's/[v|e]//g')-*-ubuntu20.04-amd64.tar.gz
     ?SH-PROMPT
 
     !cd emqx

+ 2 - 1
.github/workflows/build_packages.yaml

@@ -179,7 +179,8 @@ jobs:
       working-directory: source
       run: |
         pkg_name=$(find _packages/${{ matrix.profile }} -mindepth 1 -maxdepth 1 -iname \*.tar.gz)
-        tar -zxf $pkg_name
+        mkdir -p emqx
+        tar -C emqx -zxf $pkg_name
         # gsed -i '/emqx_telemetry/d' ./emqx/data/loaded_plugins
         ./emqx/bin/emqx start || cat emqx/log/erlang.log.1
         ready='no'

+ 2 - 1
.github/workflows/build_slim_packages.yaml

@@ -197,7 +197,8 @@ jobs:
     - name: test
       run: |
         pkg_name=$(find _packages/${{ matrix.profile }} -mindepth 1 -maxdepth 1 -iname \*.tar.gz)
-        tar -zxf $pkg_name
+        mkdir -p emqx
+        tar -C emqx -zxf $pkg_name
         # gsed -i '/emqx_telemetry/d' ./emqx/data/loaded_plugins
         ./emqx/bin/emqx start || cat emqx/log/erlang.log.1
         ready='no'

+ 6 - 5
build

@@ -111,12 +111,12 @@ make_relup() {
     mkdir -p "${rel_dir}/lib"
     mkdir -p "${rel_dir}/releases"
     local name_pattern
-    name_pattern="${PROFILE}-$(./pkg-vsn.sh "$PROFILE" --vsn_matcher)"
+    name_pattern="${PROFILE}-$(./pkg-vsn.sh "$PROFILE" --vsn_matcher --long)"
     local releases=()
     while read -r tgzfile ; do
         local base_vsn
-        base_vsn="$(echo "$tgzfile" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta)\.[0-9])?(-[0-9a-f]{8})?" | head -1)"
-        tar -C "$rel_dir" -zxf ---keep-old-files "$tgzfile" emqx/releases emqx/lib
+        base_vsn="$(echo "$tgzfile" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc)\.[0-9])?(-[0-9a-f]{8})?" | head -1)"
+        tar -C "$rel_dir" -zxf "$tgzfile" --keep-old-files releases lib
         releases+=( "$base_vsn" )
     done < <("$FIND" _upgrade_base -maxdepth 1 -name "${name_pattern}.tar.gz" -type f)
     if [ ${#releases[@]} -eq 0 ]; then
@@ -183,8 +183,9 @@ make_tgz() {
     ## for DEB and RPM packages the dependencies are resoved by yum and apt
     cp_dyn_libs "${tard}/emqx"
     ## create tar after change dir (for windows)
-    pushd "${tard}" >/dev/null
-    tar -czf "${target_name}" emqx
+    ## to avoid creating an extra level of 'emqx' dir in the .tar.gz file
+    pushd "${tard}/emqx" >/dev/null
+    tar -zcf "../${target_name}" *
     popd >/dev/null
     mv "${tard}/${target_name}" "${target}"
     case "$SYSTEM" in

+ 4 - 2
scripts/pkg-tests.sh

@@ -88,7 +88,8 @@ emqx_test(){
     local packagename="${PACKAGE_FILE_NAME}"
     case "$PKG_SUFFIX" in
         "tar.gz")
-            tar -zxf "${PACKAGE_PATH}/${packagename}"
+            mkdir -p "${PACKAGE_PATH}/emqx"
+            tar -C "${PACKAGE_PATH}/emqx" -zxf "${PACKAGE_PATH}/${packagename}"
             export EMQX_ZONES__DEFAULT__MQTT__SERVER_KEEPALIVE=60
             export EMQX_MQTT__MAX_TOPIC_ALIAS=10
             export EMQX_LOG__CONSOLE_HANDLER__LEVEL=debug
@@ -231,7 +232,8 @@ relup_test(){
     pattern="$EMQX_NAME-$("$CODE_PATH"/pkg-vsn.sh "${EMQX_NAME}" --long --vsn_matcher)"
     while read -r pkg; do
         packagename=$(basename "${pkg}")
-        tar -zxf "$packagename"
+        mkdir -p emqx
+        tar -C emqx -zxf "$packagename"
         if ! ./emqx/bin/emqx start; then
             cat emqx/log/erlang.log.1 || true
             cat emqx/log/emqx.log.1 || true

+ 1 - 1
scripts/update_appup.escript

@@ -173,7 +173,7 @@ download_prev_release(Tag, #{binary_rel_url := {ok, URL0}, clone_url := Repo}) -
     Filename = filename:join(BaseDir, Dir),
     Script = "mkdir -p ${OUTFILE} &&
               wget -c -O ${OUTFILE}.tar.gz ${URL} &&
-              tar -zxf ${OUTFILE} ${OUTFILE}.tar.gz",
+              tar -zxf ${OUTFILE}.tar.gz -C ${OUTFILE}",
     Env = [{"TAG", Tag}, {"OUTFILE", Filename}, {"URL", URL}],
     bash(Script, Env),
     {ok, Filename}.