diff --git a/.ci/build_packages/Dockerfile b/.ci/build_packages/Dockerfile deleted file mode 100644 index 3f842dfb8..000000000 --- a/.ci/build_packages/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/4.4-5:24.1.5-3-ubuntu20.04 -FROM ${BUILD_FROM} - -ARG EMQX_NAME=emqx - -COPY . /emqx - -WORKDIR /emqx - -RUN rm -rf _build/${EMQX_NAME}/lib _build/${EMQX_NAME}-pkg/lib - -RUN make ${EMQX_NAME}-zip || cat rebar3.crashdump - -RUN make ${EMQX_NAME}-pkg || cat rebar3.crashdump - -RUN /emqx/.ci/build_packages/tests.sh diff --git a/.ci/build_packages/tests.sh b/.ci/build_packages/tests.sh index 98139dc99..c5b6ec539 100755 --- a/.ci/build_packages/tests.sh +++ b/.ci/build_packages/tests.sh @@ -1,12 +1,12 @@ #!/usr/bin/env bash ## This script tests built package start/stop -## Accept 2 args PACKAGE_NAME and PACKAGE_TYPE +## Accept 2 args PROFILE and PACKAGE_TYPE set -x -e -u if [ -z "${1:-}" ]; then - echo "Usage $0 zip|pkg" + echo "Usage $0 e.g. emqx, emqx-edge" exit 1 fi @@ -15,20 +15,22 @@ if [ "${2:-}" != 'zip' ] && [ "${2:-}" != 'pkg' ]; then exit 1 fi -PACKAGE_NAME="${1}" +PROFILE="${1}" PACKAGE_TYPE="${2}" export CODE_PATH=${CODE_PATH:-"/emqx"} -export EMQX_NAME=${EMQX_NAME:-"emqx"} -export PACKAGE_PATH="${CODE_PATH}/_packages/${EMQX_NAME}" +export PACKAGE_PATH="${CODE_PATH}/_packages/${PROFILE}" export RELUP_PACKAGE_PATH="${CODE_PATH}/_upgrade_base" # export EMQX_NODE_NAME="emqx-on-$(uname -m)@127.0.0.1" # export EMQX_NODE_COOKIE=$(date +%s%N) +PKG_VSN="$($CODE_PATH/pkg-vsn.sh)" +OTP_VSN="$($CODE_PATH/scripts/get-otp-vsn.sh)" +SYSTEM="$($CODE_PATH/scripts/get-distro.sh)" + if [ "$PACKAGE_TYPE" = 'zip' ]; then PKG_SUFFIX="zip" else - SYSTEM="$($CODE_PATH/scripts/get-distro.sh)" case "${SYSTEM:-}" in ubuntu*|debian*|raspbian*) PKG_SUFFIX='deb' @@ -38,15 +40,9 @@ else ;; esac fi -PACKAGE_FILE_NAME="${PACKAGE_NAME}.${PKG_SUFFIX}" -PACKAGE_FILE="${PACKAGE_PATH}/${PACKAGE_FILE_NAME}" -if ! [ -f "$PACKAGE_FILE" ]; then - echo "$PACKAGE_FILE is not a file" - exit 1 -fi - -case "$(uname -m)" in +ARCH="$(uname -m)" +case "$ARCH" in x86_64) ARCH='amd64' ;; @@ -59,6 +55,15 @@ case "$(uname -m)" in esac export ARCH +PACKAGE_NAME="${PROFILE}-${PKG_VSN}-otp${OTP_VSN}-${SYSTEM}-${ARCH}" +PACKAGE_FILE_NAME="${PACKAGE_NAME}.${PKG_SUFFIX}" + +PACKAGE_FILE="${PACKAGE_PATH}/${PACKAGE_FILE_NAME}" +if ! [ -f "$PACKAGE_FILE" ]; then + echo "$PACKAGE_FILE is not a file" + exit 1 +fi + emqx_prepare(){ mkdir -p "${PACKAGE_PATH}" if [ ! -d "/paho-mqtt-testing" ]; then @@ -111,14 +116,14 @@ emqx_test(){ running_test echo "running ${packagename} stop" - dpkg -r "${EMQX_NAME}" + dpkg -r "${PROFILE}" if [ "$(dpkg -l |grep emqx |awk '{print $1}')" != "rc" ] then echo "package remove error" exit 1 fi - dpkg -P "${EMQX_NAME}" + dpkg -P "${PROFILE}" if dpkg -l |grep -q emqx then echo "package uninstall error" @@ -127,7 +132,7 @@ emqx_test(){ ;; "rpm") yum install -y "${PACKAGE_PATH}/${packagename}" - if ! rpm -q ${EMQX_NAME} | grep -q "${EMQX_NAME}"; then + if ! rpm -q ${PROFILE} | grep -q "${PROFILE}"; then echo "package install error" exit 1 fi @@ -136,7 +141,7 @@ emqx_test(){ running_test echo "running ${packagename} stop" - rpm -e "${EMQX_NAME}" + rpm -e "${PROFILE}" if [ "$(rpm -q emqx)" != "package emqx is not installed" ];then echo "package uninstall error" exit 1 @@ -176,7 +181,7 @@ relup_test(){ if [ -d "${RELUP_PACKAGE_PATH}" ];then cd "${RELUP_PACKAGE_PATH}" - find . -maxdepth 1 -name "${EMQX_NAME}-*-${ARCH}.zip" | + find . -maxdepth 1 -name "${PROFILE}-*-${ARCH}.zip" | while read -r pkg; do packagename=$(basename "${pkg}") unzip -q "$packagename" @@ -187,7 +192,7 @@ relup_test(){ fi ./emqx/bin/emqx_ctl status ./emqx/bin/emqx versions - cp "${PACKAGE_PATH}/${EMQX_NAME}-${TARGET_VERSION}"-*-"${ARCH}".zip ./emqx/releases + cp "${PACKAGE_PATH}/${PROFILE}-${TARGET_VERSION}"-*-"${ARCH}".zip ./emqx/releases ./emqx/bin/emqx install "${TARGET_VERSION}" [ "$(./emqx/bin/emqx versions |grep permanent | awk '{print $2}')" = "${TARGET_VERSION}" ] || exit 1 export EMQX_WAIT_FOR_STOP=300 diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index 07b18a10a..685dc3f94 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -52,12 +52,9 @@ jobs: path: ./rebar3.crashdump - name: packages test run: | - PKG_VSN="$(./pkg-vsn.sh)" - DISTRO="$(./scripts/get-distro.sh)" - PKG_NAME="${EMQX_NAME}-${PKG_VSN}-otp${{ matrix.erl_otp }}-${DISTRO}-amd64" export CODE_PATH="$GITHUB_WORKSPACE" - .ci/build_packages/tests.sh "$PKG_NAME" zip - .ci/build_packages/tests.sh "$PKG_NAME" pkg + .ci/build_packages/tests.sh "${EMQX_NAME}" zip + .ci/build_packages/tests.sh "${EMQX_NAME}" pkg - uses: actions/upload-artifact@v2 with: name: ${{ matrix.os }} diff --git a/scripts/buildx.sh b/scripts/buildx.sh index 9e803d377..fd754bad6 100755 --- a/scripts/buildx.sh +++ b/scripts/buildx.sh @@ -70,17 +70,11 @@ fi cd "${SRC_DIR:-.}" set -x -PKG_VSN="${PKG_VSN:-$(./pkg-vsn.sh)}" -OTP_VSN="$(docker run -v $(pwd):/src --rm "$BUILDER" bash /src/scripts/get-otp-vsn.sh)" -DISTRO="$(docker run -v $(pwd):/src --rm "$BUILDER" bash /src/scripts/get-distro.sh)" -PKG_NAME="${PROFILE}-${PKG_VSN}-otp${OTP_VSN}-${DISTRO}-${ARCH}" - docker info docker run --rm --privileged tonistiigi/binfmt:latest --install ${ARCH} docker run -i --rm \ -v "$(pwd)":/emqx \ --workdir /emqx \ --platform="linux/$ARCH" \ - -e EMQX_NAME="$PROFILE" \ "$BUILDER" \ - bash -euc "make ${PROFILE}-${PKGTYPE} && .ci/build_packages/tests.sh $PKG_NAME $PKGTYPE" + bash -euc "make ${PROFILE}-${PKGTYPE} && .ci/build_packages/tests.sh $PROFILE $PKGTYPE" diff --git a/scripts/shellcheck.sh b/scripts/shellcheck.sh index 5f8cdfd51..158190bd6 100755 --- a/scripts/shellcheck.sh +++ b/scripts/shellcheck.sh @@ -3,7 +3,10 @@ set -euo pipefail target_files=() -while IFS='' read -r line; do target_files+=("$line"); done < <(grep -r -l --exclude-dir=.git --exclude-dir=_build "#!/bin/" .) +while IFS='' read -r line; do + target_files+=("$line"); +done < <(grep -r -l --exclude-dir=.git --exclude-dir=_build "#!/bin/" .) + return_code=0 for i in "${target_files[@]}"; do echo checking "$i" ...