build: make use of rebar git cache in docker build
This commit is contained in:
parent
4dd60da9ee
commit
22f8df2eee
|
@ -68,3 +68,4 @@ lux_logs/
|
||||||
bom.json
|
bom.json
|
||||||
ct_run*/
|
ct_run*/
|
||||||
apps/emqx_conf/etc/emqx.conf.all.rendered*
|
apps/emqx_conf/etc/emqx.conf.all.rendered*
|
||||||
|
rebar-git-cache.tar
|
||||||
|
|
32
build
32
build
|
@ -6,7 +6,11 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
[ "${DEBUG:-0}" -eq 1 ] && set -x
|
if [ "${DEBUG:-0}" -eq 1 ]; then
|
||||||
|
set -x
|
||||||
|
# set this for rebar3
|
||||||
|
export DIAGNOSTIC=1
|
||||||
|
fi
|
||||||
|
|
||||||
PROFILE_ARG="$1"
|
PROFILE_ARG="$1"
|
||||||
ARTIFACT="$2"
|
ARTIFACT="$2"
|
||||||
|
@ -449,17 +453,33 @@ make_docker() {
|
||||||
if [ "${DOCKER_PUSH:-false}" = true ]; then
|
if [ "${DOCKER_PUSH:-false}" = true ]; then
|
||||||
DOCKER_BUILDX_ARGS+=(--push)
|
DOCKER_BUILDX_ARGS+=(--push)
|
||||||
fi
|
fi
|
||||||
|
if [ -d "${REBAR_GIT_CACHE_DIR:-}" ]; then
|
||||||
|
cache_tar="$(pwd)/rebar-git-cache.tar"
|
||||||
|
if [ ! -f "${cache_tar}" ]; then
|
||||||
|
pushd "${REBAR_GIT_CACHE_DIR}" >/dev/null
|
||||||
|
tar -cf "${cache_tar}" .
|
||||||
|
popd >/dev/null
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "${DEBUG:-}" ]; then
|
||||||
|
DOCKER_BUILDX_ARGS+=(--build-arg DEBUG="${DEBUG}" --progress=plain)
|
||||||
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2015
|
# shellcheck disable=SC2015
|
||||||
[ -f ./.dockerignore ] && mv ./.dockerignore ./.dockerignore.bak || true
|
[ -f ./.dockerignore ] && mv ./.dockerignore ./.dockerignore.bak || true
|
||||||
trap docker_cleanup EXIT
|
trap docker_cleanup EXIT
|
||||||
{
|
{
|
||||||
echo '/_build'
|
echo '_build/'
|
||||||
echo '/deps'
|
echo 'deps/'
|
||||||
echo '/*.lock'
|
echo '*.lock'
|
||||||
|
echo '_packages/'
|
||||||
|
echo '.vs/'
|
||||||
|
echo '.vscode/'
|
||||||
|
echo 'lux_logs/'
|
||||||
|
echo '_upgrade_base/'
|
||||||
} >> ./.dockerignore
|
} >> ./.dockerignore
|
||||||
set -x
|
echo "Docker build args: ${DOCKER_BUILDX_ARGS[*]}"
|
||||||
docker buildx build "${DOCKER_BUILDX_ARGS[@]}" .
|
docker buildx build "${DOCKER_BUILDX_ARGS[@]}" .
|
||||||
[[ "${DEBUG:-}" -eq 1 ]] || set +x
|
|
||||||
echo "${EMQX_IMAGE_TAG}" > ./.docker_image_tag
|
echo "${EMQX_IMAGE_TAG}" > ./.docker_image_tag
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,35 @@
|
||||||
ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/5.1-4:1.14.5-25.3.2-2-debian11
|
ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/5.1-4:1.14.5-25.3.2-2-debian11
|
||||||
ARG RUN_FROM=public.ecr.aws/debian/debian:11-slim
|
ARG RUN_FROM=public.ecr.aws/debian/debian:11-slim
|
||||||
FROM ${BUILD_FROM} AS builder
|
FROM ${BUILD_FROM} AS builder
|
||||||
|
ARG DEBUG=0
|
||||||
|
|
||||||
COPY . /emqx
|
COPY . /emqx
|
||||||
|
|
||||||
ARG EMQX_NAME=emqx
|
ARG EMQX_NAME=emqx
|
||||||
ARG PKG_VSN
|
ARG PKG_VSN
|
||||||
ENV EMQX_RELUP=false
|
|
||||||
|
|
||||||
RUN export PROFILE=${EMQX_NAME%%-elixir} \
|
ENV EMQX_RELUP=false
|
||||||
&& export EMQX_NAME1=$EMQX_NAME \
|
ENV DEBUG=${DEBUG}
|
||||||
&& export EMQX_NAME=$PROFILE \
|
ENV EMQX_REL_FORM='docker'
|
||||||
&& export EMQX_REL_PATH="/emqx/_build/$EMQX_NAME/rel/emqx" \
|
|
||||||
&& export EMQX_REL_FORM='docker' \
|
WORKDIR /emqx/
|
||||||
&& cd /emqx \
|
|
||||||
&& make $EMQX_NAME1 \
|
RUN git config --global --add safe.directory '*'
|
||||||
&& rm -f $EMQX_REL_PATH/*.tar.gz \
|
|
||||||
|
RUN if [ -f rebar-git-cache.tar ]; then \
|
||||||
|
mkdir .cache && \
|
||||||
|
tar -xf rebar-git-cache.tar -C .cache && \
|
||||||
|
export REBAR_GIT_CACHE_DIR='/emqx/.cache' && \
|
||||||
|
export REBAR_GIT_CACHE_REF_AUTOFILL=0 ;\
|
||||||
|
fi \
|
||||||
|
&& export PROFILE=${EMQX_NAME%%-elixir} \
|
||||||
|
&& export EMQX_NAME1="${EMQX_NAME}" \
|
||||||
|
&& export EMQX_NAME=${PROFILE} \
|
||||||
|
&& export EMQX_REL_PATH="/emqx/_build/${EMQX_NAME}/rel/emqx" \
|
||||||
|
&& make ${EMQX_NAME1} \
|
||||||
|
&& rm -f ${EMQX_REL_PATH}/*.tar.gz \
|
||||||
&& mkdir -p /emqx-rel \
|
&& mkdir -p /emqx-rel \
|
||||||
&& mv $EMQX_REL_PATH /emqx-rel
|
&& mv ${EMQX_REL_PATH} /emqx-rel
|
||||||
|
|
||||||
FROM $RUN_FROM
|
FROM $RUN_FROM
|
||||||
ARG EXTRA_DEPS=''
|
ARG EXTRA_DEPS=''
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
[ "${DEBUG:-0}" -eq 1 ] && set -x
|
||||||
|
|
||||||
## rebar3 tag 3.19.0-emqx-1 is compiled using latest official OTP-24 image.
|
## rebar3 tag 3.19.0-emqx-1 is compiled using latest official OTP-24 image.
|
||||||
## we have to use an otp24-compiled rebar3 because the defination of record #application{}
|
## we have to use an otp24-compiled rebar3 because the defination of record #application{}
|
||||||
## in systools.hrl is changed in otp24.
|
## in systools.hrl is changed in otp24.
|
||||||
|
@ -14,7 +16,7 @@ case ${OTP_VSN} in
|
||||||
VERSION="3.18.0-emqx-1"
|
VERSION="3.18.0-emqx-1"
|
||||||
;;
|
;;
|
||||||
25*)
|
25*)
|
||||||
VERSION="3.19.0-emqx-8"
|
VERSION="3.19.0-emqx-9"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupporetd Erlang/OTP version $OTP_VSN"
|
echo "Unsupporetd Erlang/OTP version $OTP_VSN"
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
[ "${DEBUG:-0}" -eq 1 ] && set -x
|
||||||
|
|
||||||
# NOTE: PROFILE_STR may not be exactly PROFILE (emqx or emqx-enterprise)
|
# NOTE: PROFILE_STR may not be exactly PROFILE (emqx or emqx-enterprise)
|
||||||
# it might be with suffix such as -pkg etc.
|
# it might be with suffix such as -pkg etc.
|
||||||
PROFILE_STR="${1}"
|
PROFILE_STR="${1}"
|
||||||
|
@ -28,5 +30,6 @@ curl -L --silent --show-error \
|
||||||
--output "apps/emqx_dashboard/priv/desc.zh.hocon" \
|
--output "apps/emqx_dashboard/priv/desc.zh.hocon" \
|
||||||
'https://raw.githubusercontent.com/emqx/emqx-i18n/main/desc.zh.hocon'
|
'https://raw.githubusercontent.com/emqx/emqx-i18n/main/desc.zh.hocon'
|
||||||
|
|
||||||
# generate sbom
|
# TODO
|
||||||
./scripts/update-bom.sh "$PROFILE_STR" ./rel
|
# make sbom a build artifcat
|
||||||
|
# ./scripts/update-bom.sh "$PROFILE_STR" ./rel
|
||||||
|
|
|
@ -8,4 +8,3 @@ PROFILE="$1"
|
||||||
REL_DIR="$2"
|
REL_DIR="$2"
|
||||||
|
|
||||||
./rebar3 as "$PROFILE" sbom -f -o "$REL_DIR/bom.json"
|
./rebar3 as "$PROFILE" sbom -f -o "$REL_DIR/bom.json"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue