From e2650add402d9377cc0f8a5246d5dabcced73de0 Mon Sep 17 00:00:00 2001 From: Xinwei Xiong <3293172751NSS@gmail.com> Date: Fri, 26 Jan 2024 20:53:25 +0800 Subject: [PATCH] feat: Enhanced Automation for OpenIM Advanced CICD and GitOps Support (#1819) * feat: add advanced version cicd * fix: fix openim server deployment --- build/images/openim-rpc-encryption/Dockerfile | 45 +++++++++++++++++++ build/images/openim-rpc-extend-msg/Dockerfile | 45 +++++++++++++++++++ scripts/install-im-server.sh | 9 ++-- scripts/lib/release.sh | 5 ++- scripts/make-rules/image.mk | 3 +- scripts/release.sh | 2 +- 6 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 build/images/openim-rpc-encryption/Dockerfile create mode 100644 build/images/openim-rpc-extend-msg/Dockerfile diff --git a/build/images/openim-rpc-encryption/Dockerfile b/build/images/openim-rpc-encryption/Dockerfile new file mode 100644 index 000000000..e3f232eaf --- /dev/null +++ b/build/images/openim-rpc-encryption/Dockerfile @@ -0,0 +1,45 @@ +# Copyright © 2023 OpenIM. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# OpenIM base image: https://github.com/openim-sigs/openim-base-image + +# Set go mod installation source and proxy + +FROM golang:1.20 AS builder + +ARG GO111MODULE=on +ARG GOPROXY=https://goproxy.cn,direct + +WORKDIR /openim/openim-server + +ENV GO111MODULE=$GO111MODULE +ENV GOPROXY=$GOPROXY + +COPY go.mod go.sum ./ +RUN go mod download + +COPY . . + +RUN make build BINS=openim-rpc-encryption + +RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-encryption /usr/bin/openim-rpc-encryption + +# FROM ghcr.io/openim-sigs/openim-bash-image:latest +FROM ghcr.io/openim-sigs/openim-bash-image:latest + +WORKDIR /openim/openim-server + +COPY --from=builder /usr/bin/openim-rpc-encryption ./bin/openim-rpc-encryption + +ENTRYPOINT ["./bin/openim-rpc-encryption"] \ No newline at end of file diff --git a/build/images/openim-rpc-extend-msg/Dockerfile b/build/images/openim-rpc-extend-msg/Dockerfile new file mode 100644 index 000000000..3ed94019b --- /dev/null +++ b/build/images/openim-rpc-extend-msg/Dockerfile @@ -0,0 +1,45 @@ +# Copyright © 2023 OpenIM. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# OpenIM base image: https://github.com/openim-sigs/openim-base-image + +# Set go mod installation source and proxy + +FROM golang:1.20 AS builder + +ARG GO111MODULE=on +ARG GOPROXY=https://goproxy.cn,direct + +WORKDIR /openim/openim-server + +ENV GO111MODULE=$GO111MODULE +ENV GOPROXY=$GOPROXY + +COPY go.mod go.sum ./ +RUN go mod download + +COPY . . + +RUN make build BINS=openim-rpc-extend-msg + +RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-extend-msg /usr/bin/openim-rpc-extend-msg + +# FROM ghcr.io/openim-sigs/openim-bash-image:latest +FROM ghcr.io/openim-sigs/openim-bash-image:latest + +WORKDIR /openim/openim-server + +COPY --from=builder /usr/bin/openim-rpc-extend-msg ./bin/openim-rpc-extend-msg + +ENTRYPOINT ["./bin/openim-rpc-extend-msg"] \ No newline at end of file diff --git a/scripts/install-im-server.sh b/scripts/install-im-server.sh index 9588032d7..c1224e30c 100755 --- a/scripts/install-im-server.sh +++ b/scripts/install-im-server.sh @@ -69,17 +69,18 @@ ${DOCKER_COMPOSE_COMMAND} up -d check_containers() { if ! ${DOCKER_COMPOSE_COMMAND} ps | grep -q 'Up'; then echo "Error: One or more docker containers failed to start." - ${DOCKER_COMPOSE_COMMAND} logs + ${DOCKER_COMPOSE_COMMAND} logs openim-server + ${DOCKER_COMPOSE_COMMAND} logs openim-chat return 1 fi return 0 } # Wait for a short period to allow containers to initialize -sleep 30 -check_containers +sleep 100 -${DOCKER_COMPOSE_COMMAND} logs openim-server ${DOCKER_COMPOSE_COMMAND} ps +check_containers + popd \ No newline at end of file diff --git a/scripts/lib/release.sh b/scripts/lib/release.sh index 2a525f12c..521e5cedc 100755 --- a/scripts/lib/release.sh +++ b/scripts/lib/release.sh @@ -25,6 +25,7 @@ readonly BUCKET="openim-1306374445" readonly REGION="ap-guangzhou" readonly COS_RELEASE_DIR="openim-release" +# readonly COS_RELEASE_DIR="openim-advanced-release" # !pro # default cos command tool coscli or coscmd readonly COSTOOL="coscli" @@ -37,9 +38,11 @@ readonly RELEASE_IMAGES="${LOCAL_OUTPUT_ROOT}/release-images" # OpenIM github account info readonly OPENIM_GITHUB_ORG=openimsdk readonly OPENIM_GITHUB_REPO=open-im-server -readonly CHAT_GITHUB_REPO=chat +# readonly OPENIM_GITHUB_REPO=open-im-server-enterprise # !pro readonly ARTIFACT=openim.tar.gz +# readonly ARTIFACT=openim-enterprise.tar.gz # !pro + readonly CHECKSUM=${ARTIFACT}.sha1sum OPENIM_BUILD_CONFORMANCE=${OPENIM_BUILD_CONFORMANCE:-y} diff --git a/scripts/make-rules/image.mk b/scripts/make-rules/image.mk index 14a4b2c31..eaec4a127 100644 --- a/scripts/make-rules/image.mk +++ b/scripts/make-rules/image.mk @@ -45,7 +45,8 @@ endif IMAGES_DIR ?= $(wildcard ${ROOT_DIR}/build/images/*) # Determine images names by stripping out the dir names, and filter out the undesired directories # IMAGES ?= $(filter-out Dockerfile,$(foreach image,${IMAGES_DIR},$(notdir ${image}))) -IMAGES ?= $(filter-out Dockerfile openim-tools openim-cmdutils,$(foreach image,${IMAGES_DIR},$(notdir ${image}))) +IMAGES ?= $(filter-out Dockerfile openim-tools openim-rpc-extend-msg openim-rpc-encryption openim-cmdutils,$(foreach image,${IMAGES_DIR},$(notdir ${image}))) +# IMAGES ?= $(filter-out Dockerfile openim-tools openim-cmdutils,$(foreach image,${IMAGES_DIR},$(notdir ${image}))) # !pro ifeq (${IMAGES},) $(error Could not determine IMAGES, set ROOT_DIR or run in source dir) diff --git a/scripts/release.sh b/scripts/release.sh index 4984b2166..a34d5ee22 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -130,7 +130,7 @@ perform_action() { if [ "$flag" == true ]; then openim::log::info "## $message..." - if ! $command; then + if ! eval "$command"; then openim::log::errexit "Error in $message" fi fi