diff --git a/.github/workflows/openimci.yml b/.github/workflows/openimci.yml index bf59daf33..1648aab1d 100644 --- a/.github/workflows/openimci.yml +++ b/.github/workflows/openimci.yml @@ -214,14 +214,10 @@ jobs: sudo make restart sudo make check - # - name: Build, Start, Check Services and Print Logs for macOS - # if: runner.os == 'macOS' - # run: | - # make init && \ - # make build && \ - # make start && \ - # make check || \ - # (echo "An error occurred, printing logs:" && sudo cat ./_output/logs/* 2>/dev/null) + - name: Build, Start, Check Services and Print Logs for macOS + if: runner.os == 'macOS' + run: | + make multiarch openim-test-build-image: name: Build OpenIM Docker Image diff --git a/scripts/install-im-server.sh b/scripts/install-im-server.sh index 426b29b7a..16ac625ee 100755 --- a/scripts/install-im-server.sh +++ b/scripts/install-im-server.sh @@ -1,22 +1,18 @@ #!/usr/bin/env bash -# 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 +# OpenIM Docker Deployment Script # -# http://www.apache.org/licenses/LICENSE-2.0 +# This script automates the process of building the OpenIM server image +# and deploying it using Docker Compose. # -# 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. - +# Variables: +# - SERVER_IMAGE_VERSION: Version of the server image (default: test) +# - IMAGE_REGISTRY: Docker image registry (default: openim) +# - DOCKER_COMPOSE_FILE_URL: URL to the docker-compose.yml file +# +# Usage: +# SERVER_IMAGE_VERSION=latest IMAGE_REGISTRY=myregistry ./this_script.sh -# Common utilities, variables and checks for all build scripts. -# This script works by building an IM image locally -# and then using the IM built image to deploy tests on openim-docker set -o errexit set -o nounset set -o pipefail @@ -30,37 +26,46 @@ chmod +x "${OPENIM_ROOT}"/scripts/*.sh openim::util::ensure_docker_daemon_connectivity +# Default values for variables +: ${SERVER_IMAGE_VERSION:=test} +: ${IMAGE_REGISTRY:=openim} +: ${DOCKER_COMPOSE_FILE_URL:="https://raw.githubusercontent.com/openimsdk/openim-docker/main/docker-compose.yaml"} + DOCKER_COMPOSE_COMMAND= # Check if docker-compose command is available openim::util::check_docker_and_compose_versions -if command -v docker compose &> /dev/null -then +if command -v docker compose &> /dev/null; then openim::log::info "docker compose command is available" DOCKER_COMPOSE_COMMAND="docker compose" else DOCKER_COMPOSE_COMMAND="docker-compose" fi -export SERVER_IMAGE_VERSION=test -export IMAGE_REGISTRY=openim +export SERVER_IMAGE_VERSION +export IMAGE_REGISTRY "${OPENIM_ROOT}"/scripts/init-config.sh + pushd "${OPENIM_ROOT}" -docker build -t openim/openim-server:test . +docker build -t "${IMAGE_REGISTRY}/openim-server:${SERVER_IMAGE_VERSION}" . ${DOCKER_COMPOSE_COMMAND} stop -curl https://raw.githubusercontent.com/openimsdk/openim-docker/main/docker-compose.yaml -o docker-compose.yml +curl "${DOCKER_COMPOSE_FILE_URL}" -o docker-compose.yml ${DOCKER_COMPOSE_COMMAND} up -d +# Function to check container status +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 + return 1 + fi + return 0 +} + # Wait for a short period to allow containers to initialize sleep 30 +check_containers -# Check the status of the containers -if ! ${DOCKER_COMPOSE_COMMAND} ps | grep -q 'Up'; then - echo "Error: One or more docker containers failed to start." - ${DOCKER_COMPOSE_COMMAND} logs -fi - -sleep 30 # Keep the original 60-second wait, adjusted for the 10-second check above ${DOCKER_COMPOSE_COMMAND} logs openim-server ${DOCKER_COMPOSE_COMMAND} ps -popd +popd \ No newline at end of file