diff --git a/hack/contrib/docker/api/Dockerfile b/hack/contrib/docker/api/Dockerfile index f2deb181738c5ea15a70bdd19cd46796c48a84a4..593a0d375018804d84c21ef1540a760206140980 100644 --- a/hack/contrib/docker/api/Dockerfile +++ b/hack/contrib/docker/api/Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE_VERSION -FROM debian:bullseye-slim +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC ADD rainbond-api /run/rainbond-api diff --git a/hack/contrib/docker/buildstack/Dockerfile b/hack/contrib/docker/buildstack/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..fc07253d508931957792d93ff4b115b22fcedbd9 --- /dev/null +++ b/hack/contrib/docker/buildstack/Dockerfile @@ -0,0 +1,13 @@ +ARG GO_VERSION +FROM golang:${GO_VERSION} + +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ + && apk --no-cache add gcc libc-dev tzdata ca-certificates libc6-compat libgcc libstdc++ g++ + +RUN apk add --no-cache binutils-gold + +WORKDIR /go + + + + diff --git a/hack/contrib/docker/chaos/Dockerfile b/hack/contrib/docker/chaos/Dockerfile index ddb5cbf6fad571f914ccc0435bf3edde6b9f77e8..0183acf76935428f93333e32146dd00f0e3ad317 100644 --- a/hack/contrib/docker/chaos/Dockerfile +++ b/hack/contrib/docker/chaos/Dockerfile @@ -1,12 +1,11 @@ ARG BASE_IMAGE_VERSION -FROM debian:bullseye-slim +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC ENV WORK_DIR=/run -RUN apt update \ - && apt install openssl openssh-client subversion -y +RUN apk add -no-cacahe openssl openssh-client subversion -y COPY rainbond-chaos entrypoint.sh /run/ COPY export-app /src/export-app diff --git a/hack/contrib/docker/eventlog/Dockerfile b/hack/contrib/docker/eventlog/Dockerfile index 53bd5de382316de042350bc3651cf8c4a11fd19c..629f839a621f6f2f063a412b6778b3d5f37a7b86 100644 --- a/hack/contrib/docker/eventlog/Dockerfile +++ b/hack/contrib/docker/eventlog/Dockerfile @@ -1,4 +1,5 @@ -FROM goodrainapps/alpine:latest +ARG BASE_IMAGE_VERSION +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC RUN apk --no-cache add libstdc++ ca-certificates openssl openssl-dev diff --git a/hack/contrib/docker/eventlog/Dockerfile.arm b/hack/contrib/docker/eventlog/Dockerfile.arm index 5065380bc747e5bbc225b68e331ca6352c0d05d7..ac58d01dfec778a8ca0c95e8e0ef2d15b5907fc3 100644 --- a/hack/contrib/docker/eventlog/Dockerfile.arm +++ b/hack/contrib/docker/eventlog/Dockerfile.arm @@ -1,8 +1,8 @@ -FROM debian:buster - -RUN apt update && apt install -y ca-certificates openssl libssl-dev libsodium-dev libpgm-dev libnorm-dev libgssapi-krb5-2 wget +FROM goodrainapps/alpine:3.16 +ARG RELEASE_DESC +RUN apk add --no-cache libstdc++ ca-certificates openssl openssl-dev zeromq-dev -RUN wget https://rainbond-pkg.oss-cn-shanghai.aliyuncs.com/5.3-arm/libzmq.so.5 -O /usr/lib/libzmq.so.5 +#RUN wget https://rainbond-pkg.oss-cn-shanghai.aliyuncs.com/5.3-arm/libzmq.so.5 -O /usr/lib/libzmq.so.5 COPY rainbond-eventlog /run/rainbond-eventlog ADD entrypoint.sh /run/entrypoint.sh diff --git a/hack/contrib/docker/eventlog/build/Dockerfile.arm b/hack/contrib/docker/eventlog/build/Dockerfile.arm index 5bd43b4f234e665c5f5eb8eed6ad91165b605b39..a276ca0feee620018fe075eee601090420e70dc9 100644 --- a/hack/contrib/docker/eventlog/build/Dockerfile.arm +++ b/hack/contrib/docker/eventlog/build/Dockerfile.arm @@ -1,6 +1,7 @@ -FROM golang:1.17 +FROM golang:1.17-alpine3.16 -RUN apt update && apt-get install -y libzmq3-dev +#RUN apt update && apt-get install -y libzmq3-dev +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk --no-cache add zeromq-dev gcc libc-dev WORKDIR /go diff --git a/hack/contrib/docker/grctl/Dockerfile b/hack/contrib/docker/grctl/Dockerfile index 1faf4e2dd4cc5636ec46d01a29428891850ec51c..1cf944bd2f8fbd57498dcbd9c46fc6fd30e5fd67 100644 --- a/hack/contrib/docker/grctl/Dockerfile +++ b/hack/contrib/docker/grctl/Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE_VERSION -FROM debian:bullseye-slim +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC COPY . /run RUN chmod +x /run/rainbond-grctl /run/entrypoint.sh diff --git a/hack/contrib/docker/mq/Dockerfile b/hack/contrib/docker/mq/Dockerfile index 86dca4a0dd1da4bf4ac367062a0d2cfce2fd51f3..f1aee12fbcfd96bd77d0c7298dcdbc8d7d75581e 100644 --- a/hack/contrib/docker/mq/Dockerfile +++ b/hack/contrib/docker/mq/Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE_VERSION -FROM debian:bullseye-slim +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC COPY rainbond-mq /run/rainbond-mq ADD entrypoint.sh /run/entrypoint.sh diff --git a/hack/contrib/docker/node/Dockerfile b/hack/contrib/docker/node/Dockerfile index 6be87eac42054dfdf16a78fce45271fa4ca5688c..719e8808b3169a3b678659868ad9b49c810593e9 100644 --- a/hack/contrib/docker/node/Dockerfile +++ b/hack/contrib/docker/node/Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE_VERSION -FROM debian:bullseye-slim +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC ADD . /run diff --git a/hack/contrib/docker/webcli/Dockerfile b/hack/contrib/docker/webcli/Dockerfile index e6cfdaf01c387732bbce2f42c228dfa3d0ca1fb5..933969c6f9eb1cd3cfbd55534e6faf0541a9a7f5 100644 --- a/hack/contrib/docker/webcli/Dockerfile +++ b/hack/contrib/docker/webcli/Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE_VERSION -FROM debian:bullseye-slim +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC ENV PORT 7070 diff --git a/hack/contrib/docker/worker/Dockerfile b/hack/contrib/docker/worker/Dockerfile index 7ce651c9e746ebcdfd5921d0722ada2e73d90f31..0e16506138593fef675054951903f07d3cfbde06 100644 --- a/hack/contrib/docker/worker/Dockerfile +++ b/hack/contrib/docker/worker/Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE_VERSION -FROM debian:bullseye-slim +FROM goodrainapps/alpine:${BASE_IMAGE_VERSION} ARG RELEASE_DESC COPY rainbond-worker /run/rainbond-worker COPY entrypoint.sh /run/entrypoint.sh diff --git a/release.sh b/release.sh index 5d2e115a27c4df34dc11541a26ec8e835450933e..50674b91617a8994695fb61e3a49a698c0fc876a 100755 --- a/release.sh +++ b/release.sh @@ -6,9 +6,16 @@ WORK_DIR=/go/src/github.com/goodrain/rainbond BASE_NAME=rainbond IMAGE_BASE_NAME=${IMAGE_NAMESPACE:-'rainbond'} DOMESTIC_NAMESPACE=${DOMESTIC_NAMESPACE:-'goodrain'} -GOARCH=${BUILD_GOARCH:-'amd64'} -GO_VERSION=1.17 +if [ "$BUILD_GOARCH" ]; then + GOARCH=${BUILD_GOARCH} +elif [ $(arch) = "aarch64" ] || [ $(arch) = "arm64" ]; then + GOARCH=arm64 +elif [ $(arch) = "x86_64" ]; then + GOARCH=amd64 +fi + +GO_VERSION=1.17-alpine3.16 GOPROXY=${GOPROXY:-'https://goproxy.cn'} @@ -46,21 +53,30 @@ build::binary() { local go_mod_cache="${home}/.cache" local OUTPATH="./_output/binary/$GOOS/${BASE_NAME}-$1" local DOCKER_PATH="./hack/contrib/docker/$1" - local build_image="golang:${GO_VERSION}" - local build_args="-w -s -X github.com/goodrain/rainbond/cmd.version=${release_desc}" + local BUILD_STACK_PATH="./hack/contrib/docker/buildstack" + local build_image="goodrain.me/golang-gcc-buildstack:${GO_VERSION}" local build_dir="./cmd/$1" local build_tag="" local DOCKERFILE_BASE=${BUILD_DOCKERFILE_BASE:-'Dockerfile'} + + if [ "$GOARCH" = "amd64" ]; then + local build_args="-w -s -X github.com/goodrain/rainbond/cmd.version=${release_desc}" + elif [ "$GOARCH" = "arm64" ]; then + local build_args="-w -s -linkmode external -extldflags '-static' -X github.com/goodrain/rainbond/cmd.version=${release_desc}" + fi + if [ -f "${DOCKER_PATH}/ignorebuild" ]; then return fi + docker build -t goodrain.me/golang-gcc-buildstack:${GO_VERSION} --build-arg GO_VERSION="${GO_VERSION}" -f "${BUILD_STACK_PATH}/${DOCKERFILE_BASE}" "${BUILD_STACK_PATH}" + CGO_ENABLED=1 if [ "$1" = "eventlog" ]; then if [ "$GOARCH" = "arm64" ]; then DOCKERFILE_BASE="Dockerfile.arm" fi - docker build -t goodraim.me/event-build:v1 -f "${DOCKER_PATH}/build/${DOCKERFILE_BASE}" "${DOCKER_PATH}/build/" - build_image="goodraim.me/event-build:v1" + docker build -t goodrain.me/event-build:v1 -f "${DOCKER_PATH}/build/${DOCKERFILE_BASE}" "${DOCKER_PATH}/build/" + build_image="goodrain.me/event-build:v1" elif [ "$1" = "chaos" ]; then build_dir="./cmd/builder" elif [ "$1" = "gateway" ]; then @@ -68,7 +84,7 @@ build::binary() { elif [ "$1" = "monitor" ]; then CGO_ENABLED=0 fi - docker run --rm -e CGO_ENABLED=${CGO_ENABLED} -e GOPROXY=${GOPROXY} -e GOOS="${GOOS}" -v "${go_mod_cache}":/go/pkg/mod -v "$(pwd)":${WORK_DIR} -w ${WORK_DIR} ${build_image} go build -ldflags "${build_args}" -tags "${build_tag}" -o "${OUTPATH}" ${build_dir} + docker run --rm -e CGO_ENABLED=${CGO_ENABLED} -e GOARCH=${GOARCH} -e GOPROXY=${GOPROXY} -e GOOS="${GOOS}" -v "${go_mod_cache}":/go/pkg/mod -v "$(pwd)":${WORK_DIR} -w ${WORK_DIR} ${build_image} go build -ldflags "${build_args}" -tags "${build_tag}" -o "${OUTPATH}" ${build_dir} if [ "$GOOS" = "windows" ]; then mv "$OUTPATH" "${OUTPATH}.exe" fi @@ -78,7 +94,7 @@ build::image() { local OUTPATH="./_output/binary/$GOOS/${BASE_NAME}-$1" local build_image_dir="./_output/image/$1/" local source_dir="./hack/contrib/docker/$1" - local BASE_IMAGE_VERSION=${BUILD_BASE_IMAGE_VERSION:-'latest'} + local BASE_IMAGE_VERSION=${BUILD_BASE_IMAGE_VERSION:-'3.16'} local DOCKERFILE_BASE=${BUILD_DOCKERFILE_BASE:-'Dockerfile'} mkdir -p "${build_image_dir}" chmod 777 "${build_image_dir}"