Merge pull request #7028 from Rory-Z/build/add-download-relup
build(relup): add new script for download relup base packages
This commit is contained in:
commit
ee544c8298
|
@ -25,8 +25,6 @@ jobs:
|
||||||
container: "ghcr.io/emqx/emqx-builder/5.0-5:1.13.2-24.1.5-4-ubuntu20.04"
|
container: "ghcr.io/emqx/emqx-builder/5.0-5:1.13.2-24.1.5-4-ubuntu20.04"
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
ce_old_vsns: ${{ steps.find_old_versons.outputs.ce_old_vsns }}
|
|
||||||
ee_old_vsns: ${{ steps.find_old_versons.outputs.ee_old_vsns }}
|
|
||||||
DEP_ROCKSDB_REF: ${{ steps.deps-refs.outputs.DEP_ROCKSDB_REF }}
|
DEP_ROCKSDB_REF: ${{ steps.deps-refs.outputs.DEP_ROCKSDB_REF }}
|
||||||
DEP_QUICER_REF: ${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
|
DEP_QUICER_REF: ${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
|
||||||
|
|
||||||
|
@ -43,16 +41,6 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
bash -x scripts/get-dep-refs.sh
|
bash -x scripts/get-dep-refs.sh
|
||||||
make clean-all
|
make clean-all
|
||||||
|
|
||||||
- name: find old versions
|
|
||||||
id: find_old_versons
|
|
||||||
shell: bash
|
|
||||||
working-directory: source
|
|
||||||
run: |
|
|
||||||
ce_old_vsns="$(./scripts/relup-base-vsns.sh community | xargs)"
|
|
||||||
ee_old_vsns="$(./scripts/relup-base-vsns.sh enterprise | xargs)"
|
|
||||||
echo "::set-output name=ce_old_vsns::${ce_old_vsns}"
|
|
||||||
echo "::set-output name=ee_old_vsns::${ee_old_vsns}"
|
|
||||||
- name: get_all_deps
|
- name: get_all_deps
|
||||||
run: |
|
run: |
|
||||||
make -C source deps-all
|
make -C source deps-all
|
||||||
|
@ -332,47 +320,6 @@ jobs:
|
||||||
source/_build/default/lib/quicer/
|
source/_build/default/lib/quicer/
|
||||||
source/deps/quicer/
|
source/deps/quicer/
|
||||||
key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ needs.prepare.outputs.DEP_QUICER_REF }}
|
key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ needs.prepare.outputs.DEP_QUICER_REF }}
|
||||||
- name: download old emqx tgz packages
|
|
||||||
env:
|
|
||||||
OTP_VSN: ${{ matrix.otp }}
|
|
||||||
PROFILE: ${{ matrix.profile }}
|
|
||||||
ARCH: ${{ matrix.arch }}
|
|
||||||
SYSTEM: ${{ matrix.os }}
|
|
||||||
CE_OLD_VSNS: ${{ needs.prepare.outputs.ce_old_vsns }}
|
|
||||||
EE_OLD_VSNS: ${{ needs.prepare.outputs.ee_old_vsns }}
|
|
||||||
working-directory: source
|
|
||||||
run: |
|
|
||||||
set -e -x -u
|
|
||||||
if [ $PROFILE = 'emqx' ]; then
|
|
||||||
s3dir='emqx-ce'
|
|
||||||
OLD_VSNS="$CE_OLD_VSNS"
|
|
||||||
elif [ $PROFILE = 'emqx-enterprise' ]; then
|
|
||||||
s3dir='emqx-ee'
|
|
||||||
OLD_VSNS="$EE_OLD_VSNS"
|
|
||||||
elif [ $PROFILE = 'emqx-edge' ]; then
|
|
||||||
s3dir='emqx-edge'
|
|
||||||
OLD_VSNS="$CE_OLD_VSNS"
|
|
||||||
else
|
|
||||||
echo "unknown profile $PROFILE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
mkdir -p _upgrade_base
|
|
||||||
cd _upgrade_base
|
|
||||||
old_vsns=$(echo "$OLD_VSNS" | tr ' ' ' ')
|
|
||||||
|
|
||||||
# workaround for bash empty array expanding issue in different bash versions
|
|
||||||
if [ -n "$old_vsns" ]; then
|
|
||||||
old_vsns=($old_vsns)
|
|
||||||
for tag in ${old_vsns[@]}; do
|
|
||||||
package_name="${PROFILE}-${tag#[e|v]}-otp${OTP_VSN}-${SYSTEM}-${ARCH}"
|
|
||||||
if [ ! -z "$(echo $(curl -I -m 10 -o /dev/null -s -w %{http_code} https://s3-us-west-2.amazonaws.com/packages.emqx/$s3dir/$tag/$package_name.tar.gz) | grep -oE "^[23]+")" ]; then
|
|
||||||
wget --no-verbose https://s3-us-west-2.amazonaws.com/packages.emqx/$s3dir/$tag/$package_name.tar.gz
|
|
||||||
wget --no-verbose https://s3-us-west-2.amazonaws.com/packages.emqx/$s3dir/$tag/$package_name.tar.gz.sha256
|
|
||||||
echo "$(cat $package_name.tar.gz.sha256) $package_name.tar.gz" | sha256sum -c || exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: build emqx packages
|
- name: build emqx packages
|
||||||
working-directory: source
|
working-directory: source
|
||||||
env:
|
env:
|
||||||
|
@ -700,6 +647,7 @@ jobs:
|
||||||
needs: [prepare, mac, linux, docker]
|
needs: [prepare, mac, linux, docker]
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
profile:
|
profile:
|
||||||
- emqx-edge
|
- emqx-edge
|
||||||
|
|
|
@ -68,36 +68,9 @@ jobs:
|
||||||
repository: ${{ github.repository }}
|
repository: ${{ github.repository }}
|
||||||
path: emqx
|
path: emqx
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: get version
|
|
||||||
run: |
|
|
||||||
set -e -x -u
|
|
||||||
cd emqx
|
|
||||||
export PROFILE=${{ matrix.profile }}
|
|
||||||
export OTP_VSN=${{ matrix.otp }}
|
|
||||||
echo "PROFILE=$PROFILE" >> $GITHUB_ENV
|
|
||||||
echo "OTP_VSN=$OTP_VSN" >> $GITHUB_ENV
|
|
||||||
if [ $PROFILE = "emqx" ];then
|
|
||||||
broker="emqx-ce"
|
|
||||||
else
|
|
||||||
broker="emqx-enterprise"
|
|
||||||
fi
|
|
||||||
echo "BROKER=$broker" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
vsn="$(./pkg-vsn.sh $PROFILE)"
|
- name: Get old vsn
|
||||||
echo "VSN=$vsn" >> $GITHUB_ENV
|
run: echo "OLD_VSNS=$(emqx/scripts/relup-base-vsns.sh ${{ matrix.profile }} | xargs echo -n)" >> $GITHUB_ENV
|
||||||
|
|
||||||
pre_vsn="$(echo $vsn | grep -oE '^[0-9]+.[0-9]')"
|
|
||||||
old_vsns="$(git tag -l "v$pre_vsn.[0-9]" | xargs echo -n | sed "s/v$vsn//")"
|
|
||||||
echo "OLD_VSNS=$old_vsns" >> $GITHUB_ENV
|
|
||||||
- name: download emqx
|
|
||||||
run: |
|
|
||||||
set -e -x -u
|
|
||||||
mkdir -p emqx/_upgrade_base
|
|
||||||
cd emqx/_upgrade_base
|
|
||||||
old_vsns=($(echo $OLD_VSNS | tr ' ' ' '))
|
|
||||||
for old_vsn in ${old_vsns[@]}; do
|
|
||||||
wget --no-verbose https://s3-us-west-2.amazonaws.com/packages.emqx/$BROKER/$old_vsn/$PROFILE-${old_vsn#[e|v]}-otp${OTP_VSN}-${{ matrix.os }}-${{ matrix.arch }}.tar.gz
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Get deps git refs for cache
|
- name: Get deps git refs for cache
|
||||||
id: deps-refs
|
id: deps-refs
|
||||||
|
@ -117,6 +90,8 @@ jobs:
|
||||||
key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
|
key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
|
||||||
|
|
||||||
- name: build emqx
|
- name: build emqx
|
||||||
|
env:
|
||||||
|
PROFILE: ${{ matrix.profile }}
|
||||||
run: make -C emqx ${PROFILE}-tgz
|
run: make -C emqx ${PROFILE}-tgz
|
||||||
- name: build emqtt-bench
|
- name: build emqtt-bench
|
||||||
run: make -C emqtt-bench
|
run: make -C emqtt-bench
|
||||||
|
@ -129,6 +104,8 @@ jobs:
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
- name: run relup test
|
- name: run relup test
|
||||||
|
env:
|
||||||
|
PROFILE: ${{ matrix.profile }}
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
run: |
|
run: |
|
||||||
set -e -x -u
|
set -e -x -u
|
||||||
|
|
12
Makefile
12
Makefile
|
@ -3,6 +3,7 @@ REBAR_VERSION = 3.16.1-emqx-1
|
||||||
REBAR = $(CURDIR)/rebar3
|
REBAR = $(CURDIR)/rebar3
|
||||||
BUILD = $(CURDIR)/build
|
BUILD = $(CURDIR)/build
|
||||||
SCRIPTS = $(CURDIR)/scripts
|
SCRIPTS = $(CURDIR)/scripts
|
||||||
|
export EMQX_RELUP ?= true
|
||||||
export EMQX_DEFAULT_BUILDER = ghcr.io/emqx/emqx-builder/5.0-5:1.13.2-24.1.5-4-alpine3.14
|
export EMQX_DEFAULT_BUILDER = ghcr.io/emqx/emqx-builder/5.0-5:1.13.2-24.1.5-4-alpine3.14
|
||||||
export EMQX_DEFAULT_RUNNER = alpine:3.14
|
export EMQX_DEFAULT_RUNNER = alpine:3.14
|
||||||
export OTP_VSN ?= $(shell $(CURDIR)/scripts/get-otp-vsn.sh)
|
export OTP_VSN ?= $(shell $(CURDIR)/scripts/get-otp-vsn.sh)
|
||||||
|
@ -162,10 +163,19 @@ dialyzer: $(REBAR)
|
||||||
$(REL_PROFILES:%=%-rel) $(PKG_PROFILES:%=%-rel): $(COMMON_DEPS)
|
$(REL_PROFILES:%=%-rel) $(PKG_PROFILES:%=%-rel): $(COMMON_DEPS)
|
||||||
@$(BUILD) $(subst -rel,,$(@)) rel
|
@$(BUILD) $(subst -rel,,$(@)) rel
|
||||||
|
|
||||||
|
## download relup base packages
|
||||||
|
.PHONY: $(REL_PROFILES:%=%-relup-downloads)
|
||||||
|
define download-relup-packages
|
||||||
|
$1-relup-downloads:
|
||||||
|
@if [ "$${EMQX_RELUP}" = "true" ]; then $(CURDIR)/scripts/relup-base-packages.sh $1; fi
|
||||||
|
endef
|
||||||
|
ALL_ZIPS = $(REL_PROFILES)
|
||||||
|
$(foreach zt,$(ALL_ZIPS),$(eval $(call download-relup-packages,$(zt))))
|
||||||
|
|
||||||
## 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: $(COMMON_DEPS)
|
$1-relup: $1-relup-downloads $(COMMON_DEPS)
|
||||||
@$(BUILD) $1 relup
|
@$(BUILD) $1 relup
|
||||||
endef
|
endef
|
||||||
ALL_TGZS = $(REL_PROFILES)
|
ALL_TGZS = $(REL_PROFILES)
|
||||||
|
|
3
build
3
build
|
@ -4,6 +4,9 @@
|
||||||
# arg1: profile, e.g. emqx | emqx-edge | emqx-pkg | emqx-edge-pkg
|
# arg1: profile, e.g. emqx | emqx-edge | emqx-pkg | emqx-edge-pkg
|
||||||
# arg2: artifact, e.g. rel | relup | tgz | pkg
|
# arg2: artifact, e.g. rel | relup | tgz | pkg
|
||||||
|
|
||||||
|
if [[ -n "$DEBUG" ]]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
DEBUG="${DEBUG:-0}"
|
DEBUG="${DEBUG:-0}"
|
||||||
|
|
|
@ -21,6 +21,7 @@ RUN apk add --no-cache \
|
||||||
COPY . /emqx
|
COPY . /emqx
|
||||||
|
|
||||||
ARG EMQX_NAME=emqx
|
ARG EMQX_NAME=emqx
|
||||||
|
ENV EMQX_RELUP=false
|
||||||
|
|
||||||
RUN export PROFILE="$EMQX_NAME" \
|
RUN export PROFILE="$EMQX_NAME" \
|
||||||
&& export EMQX_NAME=${EMQX_NAME%%-elixir} \
|
&& export EMQX_NAME=${EMQX_NAME%%-elixir} \
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
## This script helps to download relup base version packages
|
||||||
|
|
||||||
|
if [[ -n "$DEBUG" ]]; then set -x; fi
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# ensure dir
|
||||||
|
cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
|
||||||
|
|
||||||
|
PROFILE="${1:-}"
|
||||||
|
if [ "$PROFILE" = "" ]; then
|
||||||
|
PROFILE="emqx"
|
||||||
|
fi
|
||||||
|
|
||||||
|
OTP_VSN=${OTP_VSN:-$(scripts/get-otp-vsn.sh)}
|
||||||
|
|
||||||
|
case $PROFILE in
|
||||||
|
"emqx")
|
||||||
|
DIR='broker'
|
||||||
|
EDITION='community'
|
||||||
|
;;
|
||||||
|
"emqx-ee")
|
||||||
|
DIR='enterprise'
|
||||||
|
EDITION='enterprise'
|
||||||
|
;;
|
||||||
|
"emqx-edge")
|
||||||
|
DIR='edge'
|
||||||
|
EDITION='edge'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
SYSTEM="${SYSTEM:-$(./scripts/get-distro.sh)}"
|
||||||
|
|
||||||
|
ARCH="${ARCH:-$(uname -m)}"
|
||||||
|
case "$ARCH" in
|
||||||
|
x86_64)
|
||||||
|
ARCH='amd64'
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
ARCH='arm64'
|
||||||
|
;;
|
||||||
|
arm*)
|
||||||
|
ARCH=arm
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
SHASUM="sha256sum"
|
||||||
|
if [ "$SYSTEM" = "macos" ]; then
|
||||||
|
SHASUM="shasum -a 256"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p _upgrade_base
|
||||||
|
pushd _upgrade_base
|
||||||
|
|
||||||
|
for tag in $(../scripts/relup-base-vsns.sh $EDITION | xargs echo -n); do
|
||||||
|
filename="$PROFILE-$SYSTEM-${tag#[e|v]}-$ARCH.tar.gz"
|
||||||
|
url="https://www.emqx.com/downloads/$DIR/$tag/$filename"
|
||||||
|
echo "downloading ${filename} ..."
|
||||||
|
## if the file does not exist (not downloaded yet)
|
||||||
|
## and there is such a package to downlaod
|
||||||
|
if [ ! -f "$filename" ] && curl -I -m 10 -o /dev/null -s -w "%{http_code}" "${url}" | grep -q -oE "^[23]+" ; then
|
||||||
|
curl -L -o "${filename}" "${url}"
|
||||||
|
curl -L -o "${filename}.sha256" "${url}.sha256"
|
||||||
|
## https://askubuntu.com/questions/1202208/checking-sha256-checksum
|
||||||
|
echo "$(cat "${filename}.sha256") ${filename}" | $SHASUM -c || exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
popd
|
|
@ -1,6 +1,9 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
# ensure dir
|
||||||
|
cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
|
||||||
|
|
||||||
## This script prints the relup upgrade base versions
|
## This script prints the relup upgrade base versions
|
||||||
## for the given EMQX edition (specified as first arg)
|
## for the given EMQX edition (specified as first arg)
|
||||||
##
|
##
|
||||||
|
|
Loading…
Reference in New Issue