From 77652b98582cfc37a2ad9eeddecc1c030cf97c65 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 31 Dec 2021 15:45:38 +0100 Subject: [PATCH] ci: refactor package build & test jobs --- .ci/build_packages/tests.sh | 52 +++++++++++++++++----- .github/workflows/build_packages.yaml | 20 +++++---- .github/workflows/build_slim_packages.yaml | 20 +++++---- 3 files changed, 64 insertions(+), 28 deletions(-) diff --git a/.ci/build_packages/tests.sh b/.ci/build_packages/tests.sh index c4b752da1..11ef9d8bf 100755 --- a/.ci/build_packages/tests.sh +++ b/.ci/build_packages/tests.sh @@ -1,11 +1,47 @@ -#!/bin/bash -set -x -e -u +#!/usr/bin/env bash + +set -euo pipefail +set -x + +if [ -z "${1:-}" ]; then + echo "Usage $0 zip|pkg" + exit 1 +fi + +if [ "${2:-}" != 'zip' ] && [ "${2:-}" != 'pkg' ]; then + echo "Usage $0 zip|pkg" + exit 1 +fi + +PACKAGE_NAME="${1}" +PACKAGE_TYPE="${2}" + export DEBUG=1 export CODE_PATH=${CODE_PATH:-"/emqx"} export EMQX_NAME=${EMQX_NAME:-"emqx"} export PACKAGE_PATH="${CODE_PATH}/_packages/${EMQX_NAME}" export RELUP_PACKAGE_PATH="${CODE_PATH}/_upgrade_base" +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' + ;; + *) + PKG_SUFFIX='rpm' + ;; + esac +fi +PACKAGE_FILE_NAME="${PACKAGE_NAME}.${PKG_SUFFIX}" + +PACKAGE_FILE="${PACKAGE_PATH}/${PACKAGE_FILE_NAME}.${PKG_SUFFIX}" +if ! [ -f "$PACKAGE_FILE" ]; then + echo "$PACKAGE_FILE is not a file" +fi + case "$(uname -m)" in x86_64) ARCH='amd64' @@ -30,11 +66,9 @@ emqx_prepare(){ emqx_test(){ cd "${PACKAGE_PATH}" - - for var in "$PACKAGE_PATH"/"${EMQX_NAME}"-*;do - case ${var##*.} in + local packagename="${PACKAGE_FILE_NAME}" + case "$PKG_SUFFIX" in "zip") - packagename=$(basename "${PACKAGE_PATH}/${EMQX_NAME}"-*.zip) unzip -q "${PACKAGE_PATH}/${packagename}" export EMQX_ZONES__DEFAULT__MQTT__SERVER_KEEPALIVE=60 export EMQX_MQTT__MAX_TOPIC_ALIAS=10 @@ -42,7 +76,6 @@ emqx_test(){ export EMQX_LOG__FILE_HANDLERS__DEFAULT__LEVEL=debug if [[ $(arch) == *arm* || $(arch) == aarch64 ]]; then export EMQX_LISTENERS__QUIC__DEFAULT__ENABLED=false - export WAIT_FOR_ERLANG_STOP=120 fi # sed -i '/emqx_telemetry/d' "${PACKAGE_PATH}"/emqx/data/loaded_plugins @@ -72,7 +105,6 @@ emqx_test(){ rm -rf "${PACKAGE_PATH}"/emqx ;; "deb") - packagename=$(basename "${PACKAGE_PATH}/${EMQX_NAME}"-*.deb) dpkg -i "${PACKAGE_PATH}/${packagename}" if [ "$(dpkg -l |grep emqx |awk '{print $1}')" != "ii" ] then @@ -99,8 +131,6 @@ emqx_test(){ fi ;; "rpm") - packagename=$(basename "${PACKAGE_PATH}/${EMQX_NAME}"-*.rpm) - if [[ "${ARCH}" == "amd64" && $(rpm -E '%{rhel}') == 7 ]] ; then # EMQX OTP requires openssl11 to have TLS1.3 support @@ -124,7 +154,6 @@ emqx_test(){ ;; esac - done } run_test(){ @@ -142,7 +171,6 @@ EOF ## for ARM, due to CI env issue, skip start of quic listener for the moment [[ $(arch) == *arm* || $(arch) == aarch64 ]] && tee -a "$emqx_env_vars" <> $GITHUB_ENV + echo "CODE_PATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV + echo "EMQX_PKG_NAME=${{ matrix.profile }}-$(./pkg-vsn.sh)-otp${{ matrix.otp }}-${{ matrix.os }}-amd64" >> $GITHUB_ENV + - name: build and test zip package + run: | + make ${EMQX_NAME}-zip + .ci/build_packages/tests.sh "$EMQX_PKG_NAME" zip + - name: build and test deb/rpm packages + run: | + make ${EMQX_NAME}-pkg + .ci/build_packages/tests.sh "$EMQX_PKG_NAME" pkg - uses: actions/upload-artifact@v2 with: name: ${{ matrix.profile}}-${{ matrix.otp }}-${{ matrix.os }} path: _packages/**/*.zip - mac: if: contains(github.event.pull_request.labels.*.name, 'Mac') strategy: