mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-12-03 19:02:31 +08:00
Merge branch 'main' into feat/support-docker-en
This commit is contained in:
commit
20c3ea248d
53
.github/workflows/openimci.yml
vendored
53
.github/workflows/openimci.yml
vendored
@ -130,14 +130,14 @@ jobs:
|
|||||||
sudo make install
|
sudo make install
|
||||||
|
|
||||||
execute-scripts:
|
execute-scripts:
|
||||||
name: Execute OpenIM script on ${{ matrix.os }}
|
name: Execute OpenIM Script On ${{ matrix.os }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
environment:
|
environment:
|
||||||
name: openim
|
name: openim
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go_version: ["1.20"]
|
go_version: ["1.20"]
|
||||||
os: ["ubuntu-latest"]
|
os: ["ubuntu-latest", "macos-latest"]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -154,18 +154,52 @@ jobs:
|
|||||||
version: '3.x' # If available, use the latest major version that's compatible
|
version: '3.x' # If available, use the latest major version that's compatible
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Docker Operations
|
# - name: Install latest Bash (macOS only)
|
||||||
|
# if: runner.os == 'macOS'
|
||||||
|
# run: |
|
||||||
|
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
# brew update
|
||||||
|
|
||||||
|
# brew install bash
|
||||||
|
# brew install gnu-sed
|
||||||
|
|
||||||
|
# echo "/usr/local/bin" >> $GITHUB_PATH
|
||||||
|
# echo "$(brew --prefix)/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
|
||||||
|
# continue-on-error: true
|
||||||
|
|
||||||
|
- name: Set up Docker for Ubuntu
|
||||||
|
if: runner.os == 'Linux'
|
||||||
run: |
|
run: |
|
||||||
sudo make init
|
sudo make init
|
||||||
sudo docker compose up -d
|
sudo docker compose up -d
|
||||||
sudo sleep 20
|
sudo sleep 20
|
||||||
|
|
||||||
- name: Module Operations
|
# - name: Set up Docker for macOS
|
||||||
|
# if: runner.os == 'macOS'
|
||||||
|
# run: |
|
||||||
|
# brew install --cask docker
|
||||||
|
# open /Applications/Docker.app
|
||||||
|
|
||||||
|
# sleep 10
|
||||||
|
# docker-compose --version || brew install docker-compose
|
||||||
|
|
||||||
|
# docker-compose up -d
|
||||||
|
# sleep 20
|
||||||
|
|
||||||
|
- name: Module Operations for Ubuntu
|
||||||
|
if: runner.os == 'Linux'
|
||||||
run: |
|
run: |
|
||||||
sudo make tidy
|
sudo make tidy
|
||||||
sudo make tools.verify.go-gitlint
|
sudo make tools.verify.go-gitlint
|
||||||
|
|
||||||
- name: Build, Start, Check Services and Print Logs
|
# - name: Module Operations for macOS
|
||||||
|
# if: runner.os == 'macOS'
|
||||||
|
# run: |
|
||||||
|
# make tidy
|
||||||
|
# make tools.verify.go-gitlint
|
||||||
|
|
||||||
|
- name: Build, Start, Check Services and Print Logs for Ubuntu
|
||||||
|
if: runner.os == 'Linux'
|
||||||
run: |
|
run: |
|
||||||
sudo make init && \
|
sudo make init && \
|
||||||
sudo make build && \
|
sudo make build && \
|
||||||
@ -173,6 +207,15 @@ jobs:
|
|||||||
sudo make check || \
|
sudo make check || \
|
||||||
(echo "An error occurred, printing logs:" && sudo cat ./_output/logs/* 2>/dev/null)
|
(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 init && \
|
||||||
|
# make build && \
|
||||||
|
# make start && \
|
||||||
|
# make check || \
|
||||||
|
# (echo "An error occurred, printing logs:" && sudo cat ./_output/logs/* 2>/dev/null)
|
||||||
|
|
||||||
openim-test-build-image:
|
openim-test-build-image:
|
||||||
name: Build OpenIM Docker Image
|
name: Build OpenIM Docker Image
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
@ -122,14 +122,14 @@ api:
|
|||||||
# minio.signEndpoint is minio public network address
|
# minio.signEndpoint is minio public network address
|
||||||
object:
|
object:
|
||||||
enable: "minio"
|
enable: "minio"
|
||||||
apiURL: "http://172.28.0.1:10002"
|
apiURL: "http://14.155.64.202:10002"
|
||||||
minio:
|
minio:
|
||||||
bucket: "openim"
|
bucket: "openim"
|
||||||
endpoint: "http://172.28.0.1:10005"
|
endpoint: "http://172.28.0.1:10005"
|
||||||
accessKeyID: "root"
|
accessKeyID: "root"
|
||||||
secretAccessKey: "openIM123"
|
secretAccessKey: "openIM123"
|
||||||
sessionToken: ''
|
sessionToken: ''
|
||||||
signEndpoint: "http://172.28.0.1:10005"
|
signEndpoint: "http://14.155.64.202:10005"
|
||||||
publicRead: false
|
publicRead: false
|
||||||
cos:
|
cos:
|
||||||
bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com
|
bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com
|
||||||
@ -193,7 +193,7 @@ rpcRegisterName:
|
|||||||
# Whether to output in json format
|
# Whether to output in json format
|
||||||
# Whether to include stack trace in logs
|
# Whether to include stack trace in logs
|
||||||
log:
|
log:
|
||||||
storageLocation: ../logs/
|
storageLocation: /data/workspaces/open-im-server/logs/
|
||||||
rotationTime: 24
|
rotationTime: 24
|
||||||
remainRotationCount: 2
|
remainRotationCount: 2
|
||||||
remainLogLevel: 6
|
remainLogLevel: 6
|
||||||
|
|||||||
@ -26,11 +26,11 @@ PASSWORD=openIM123
|
|||||||
|
|
||||||
# Base URL for the application programming interface (API).
|
# Base URL for the application programming interface (API).
|
||||||
# Default: API_URL=http://172.28.0.1:10002
|
# Default: API_URL=http://172.28.0.1:10002
|
||||||
API_URL=http://172.28.0.1:10002
|
API_URL=http://14.155.64.202:10002
|
||||||
|
|
||||||
# Directory path for storing data files or related information.
|
# Directory path for storing data files or related information.
|
||||||
# Default: DATA_DIR=./
|
# Default: DATA_DIR=./
|
||||||
DATA_DIR=./
|
DATA_DIR=/data/workspaces/open-im-server
|
||||||
|
|
||||||
# Choose the appropriate image address, the default is GITHUB image,
|
# Choose the appropriate image address, the default is GITHUB image,
|
||||||
# you can choose docker hub, for Chinese users can choose Ali Cloud
|
# you can choose docker hub, for Chinese users can choose Ali Cloud
|
||||||
@ -210,8 +210,9 @@ API_OPENIM_PORT=10002
|
|||||||
# ======================================
|
# ======================================
|
||||||
|
|
||||||
# Branch name for OpenIM chat.
|
# Branch name for OpenIM chat.
|
||||||
# Default: CHAT_BRANCH=main
|
# Default: CHAT_IMAGE_VERSION=main
|
||||||
CHAT_BRANCH=main
|
# https://github.com/openimsdk/open-im-server/blob/main/docs/contrib/version.md
|
||||||
|
CHAT_IMAGE_VERSION=main
|
||||||
|
|
||||||
# Address or hostname for the OpenIM chat service.
|
# Address or hostname for the OpenIM chat service.
|
||||||
# Default: OPENIM_CHAT_ADDRESS=172.28.0.1
|
# Default: OPENIM_CHAT_ADDRESS=172.28.0.1
|
||||||
@ -231,8 +232,8 @@ OPENIM_CHAT_DATA_DIR=./openim-chat/main
|
|||||||
# ======================================
|
# ======================================
|
||||||
|
|
||||||
# Branch name for OpenIM server.
|
# Branch name for OpenIM server.
|
||||||
# Default: SERVER_BRANCH=main
|
# Default: SERVER_IMAGE_VERSION=main
|
||||||
SERVER_BRANCH=main
|
SERVER_IMAGE_VERSION=main
|
||||||
|
|
||||||
# Port for the OpenIM admin API.
|
# Port for the OpenIM admin API.
|
||||||
# Default: OPENIM_ADMIN_API_PORT=10009
|
# Default: OPENIM_ADMIN_API_PORT=10009
|
||||||
|
|||||||
@ -210,8 +210,8 @@ API_OPENIM_PORT=${API_OPENIM_PORT}
|
|||||||
# ======================================
|
# ======================================
|
||||||
|
|
||||||
# Branch name for OpenIM chat.
|
# Branch name for OpenIM chat.
|
||||||
# Default: CHAT_BRANCH=main
|
# Default: CHAT_IMAGE_VERSION=main
|
||||||
CHAT_BRANCH=${CHAT_BRANCH}
|
CHAT_IMAGE_VERSION=${CHAT_IMAGE_VERSION}
|
||||||
|
|
||||||
# Address or hostname for the OpenIM chat service.
|
# Address or hostname for the OpenIM chat service.
|
||||||
# Default: OPENIM_CHAT_ADDRESS=172.28.0.1
|
# Default: OPENIM_CHAT_ADDRESS=172.28.0.1
|
||||||
@ -231,8 +231,8 @@ OPENIM_CHAT_DATA_DIR=${OPENIM_CHAT_DATA_DIR}
|
|||||||
# ======================================
|
# ======================================
|
||||||
|
|
||||||
# Branch name for OpenIM server.
|
# Branch name for OpenIM server.
|
||||||
# Default: SERVER_BRANCH=main
|
# Default: SERVER_IMAGE_VERSION=main
|
||||||
SERVER_BRANCH=${SERVER_BRANCH}
|
SERVER_IMAGE_VERSION=${SERVER_IMAGE_VERSION}
|
||||||
|
|
||||||
# Port for the OpenIM admin API.
|
# Port for the OpenIM admin API.
|
||||||
# Default: OPENIM_ADMIN_API_PORT=10009
|
# Default: OPENIM_ADMIN_API_PORT=10009
|
||||||
|
|||||||
@ -104,18 +104,18 @@ Docker deployment offers a slightly more intricate template. Within the [openim-
|
|||||||
Configuration file modifications can be made by specifying corresponding environment variables, for instance:
|
Configuration file modifications can be made by specifying corresponding environment variables, for instance:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export CHAT_BRANCH="main"
|
export CHAT_IMAGE_VERSION="main"
|
||||||
export SERVER_BRANCH="main"
|
export SERVER_IMAGE_VERSION="main"
|
||||||
```
|
```
|
||||||
|
|
||||||
These variables are stored within the [`environment.sh`](https://github.com/OpenIMSDK/openim-docker/blob/main/scripts/install/environment.sh) configuration:
|
These variables are stored within the [`environment.sh`](https://github.com/OpenIMSDK/openim-docker/blob/main/scripts/install/environment.sh) configuration:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
readonly CHAT_BRANCH=${CHAT_BRANCH:-'main'}
|
readonly CHAT_IMAGE_VERSION=${CHAT_IMAGE_VERSION:-'main'}
|
||||||
readonly SERVER_BRANCH=${SERVER_BRANCH:-'main'}
|
readonly SERVER_IMAGE_VERSION=${SERVER_IMAGE_VERSION:-'main'}
|
||||||
```
|
```
|
||||||
|
|
||||||
Setting a variable, e.g., `export CHAT_BRANCH="release-v1.3"`, will prioritize `CHAT_BRANCH="release-v1.3"` as the variable value. Ultimately, the chosen image version is determined, and rendering is achieved through `make init` (or `./scripts/init-config.sh`).
|
Setting a variable, e.g., `export CHAT_IMAGE_VERSION="release-v1.3"`, will prioritize `CHAT_IMAGE_VERSION="release-v1.3"` as the variable value. Ultimately, the chosen image version is determined, and rendering is achieved through `make init` (or `./scripts/init-config.sh`).
|
||||||
|
|
||||||
> Note: Direct modifications to the `config.yaml` file are also permissible without utilizing `make init`.
|
> Note: Direct modifications to the `config.yaml` file are also permissible without utilizing `make init`.
|
||||||
|
|
||||||
|
|||||||
@ -279,7 +279,6 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbgroup.CreateGroupR
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.Notification.GroupCreatedNotification(ctx, tips)
|
|
||||||
if req.GroupInfo.GroupType == constant.SuperGroup {
|
if req.GroupInfo.GroupType == constant.SuperGroup {
|
||||||
go func() {
|
go func() {
|
||||||
for _, userID := range userIDs {
|
for _, userID := range userIDs {
|
||||||
|
|||||||
@ -39,4 +39,3 @@ func NewDiscoveryRegister(envType string) (discoveryregistry.SvcDiscoveryRegistr
|
|||||||
default:
|
default:
|
||||||
return nil, errors.New("envType not correct")
|
return nil, errors.New("envType not correct")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -47,7 +47,6 @@ print_services_and_ports() {
|
|||||||
echo "+-------------------------+----------+"
|
echo "+-------------------------+----------+"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Print out services and their ports
|
# Print out services and their ports
|
||||||
print_services_and_ports OPENIM_SERVER_NAME_TARGETS OPENIM_SERVER_PORT_TARGETS
|
print_services_and_ports OPENIM_SERVER_NAME_TARGETS OPENIM_SERVER_PORT_TARGETS
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,6 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
# This script automatically initializes various configuration files and can generate example files.
|
# This script automatically initializes various configuration files and can generate example files.
|
||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
@ -169,12 +168,6 @@ process_file() {
|
|||||||
sleep 0.5
|
sleep 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
declare -A env_vars=(
|
|
||||||
["OPENIM_IP"]="172.28.0.1"
|
|
||||||
["DATA_DIR"]="./"
|
|
||||||
["LOG_STORAGE_LOCATION"]="../logs/"
|
|
||||||
)
|
|
||||||
|
|
||||||
clean_config_files() {
|
clean_config_files() {
|
||||||
local all_templates=("${TEMPLATES[@]}" "${COPY_TEMPLATES[@]}")
|
local all_templates=("${TEMPLATES[@]}" "${COPY_TEMPLATES[@]}")
|
||||||
|
|
||||||
|
|||||||
@ -66,8 +66,8 @@ def "ENV_FILE" ""${OPENIM_ROOT}"/scripts/install/environment.sh"
|
|||||||
|
|
||||||
###################### Docker compose ###################
|
###################### Docker compose ###################
|
||||||
# OPENIM AND CHAT
|
# OPENIM AND CHAT
|
||||||
def "CHAT_BRANCH" "main"
|
def "CHAT_IMAGE_VERSION" "main"
|
||||||
def "SERVER_BRANCH" "main"
|
def "SERVER_IMAGE_VERSION" "main"
|
||||||
|
|
||||||
# Choose the appropriate image address, the default is GITHUB image,
|
# Choose the appropriate image address, the default is GITHUB image,
|
||||||
# you can choose docker hub, for Chinese users can choose Ali Cloud
|
# you can choose docker hub, for Chinese users can choose Ali Cloud
|
||||||
@ -139,7 +139,7 @@ readonly API_OPENIM_PORT=${API_OPENIM_PORT:-'10002'}
|
|||||||
def "API_LISTEN_IP" "0.0.0.0" # API的监听IP
|
def "API_LISTEN_IP" "0.0.0.0" # API的监听IP
|
||||||
|
|
||||||
###################### openim-chat 配置信息 ######################
|
###################### openim-chat 配置信息 ######################
|
||||||
def "OPENIM_CHAT_DATA_DIR" "./openim-chat/${CHAT_BRANCH}"
|
def "OPENIM_CHAT_DATA_DIR" "./openim-chat/${CHAT_IMAGE_VERSION}"
|
||||||
def "OPENIM_CHAT_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # OpenIM服务地址
|
def "OPENIM_CHAT_ADDRESS" "${DOCKER_BRIDGE_GATEWAY}" # OpenIM服务地址
|
||||||
def "OPENIM_CHAT_API_PORT" "10008" # OpenIM API端口
|
def "OPENIM_CHAT_API_PORT" "10008" # OpenIM API端口
|
||||||
def "CHAT_API_LISTEN_IP" "" # OpenIM API的监听IP
|
def "CHAT_API_LISTEN_IP" "" # OpenIM API的监听IP
|
||||||
|
|||||||
@ -20,7 +20,7 @@ OPENIM_VERBOSE="${OPENIM_VERBOSE:-5}"
|
|||||||
ENABLE_LOGGING="${ENABLE_LOGGING:-true}"
|
ENABLE_LOGGING="${ENABLE_LOGGING:-true}"
|
||||||
|
|
||||||
# If OPENIM_OUTPUT is not set, set it to the default value
|
# If OPENIM_OUTPUT is not set, set it to the default value
|
||||||
if [[ ! -v OPENIM_OUTPUT ]]; then
|
if [ -z "${OPENIM_OUTPUT+x}" ]; then
|
||||||
OPENIM_OUTPUT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../_output" && pwd -P)"
|
OPENIM_OUTPUT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../_output" && pwd -P)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@ -302,7 +302,11 @@ openim::util::check_ports() {
|
|||||||
# Iterate over each given port.
|
# Iterate over each given port.
|
||||||
for port in "$@"; do
|
for port in "$@"; do
|
||||||
# Use the `ss` command to find process information related to the given port.
|
# Use the `ss` command to find process information related to the given port.
|
||||||
local info=$(ss -ltnp | grep ":$port" || true)
|
if command -v ss > /dev/null 2>&1; then
|
||||||
|
info=$(ss -ltnp | grep ":$port" || true)
|
||||||
|
else
|
||||||
|
info=$(netstat -ltnp | grep ":$port" || true)
|
||||||
|
fi
|
||||||
|
|
||||||
# If there's no process information, it means the process associated with the port is not running.
|
# If there's no process information, it means the process associated with the port is not running.
|
||||||
if [[ -z $info ]]; then
|
if [[ -z $info ]]; then
|
||||||
@ -364,6 +368,18 @@ openim::util::check_ports() {
|
|||||||
# openim::util::check_process_names nginx mysql redis
|
# openim::util::check_process_names nginx mysql redis
|
||||||
# The function returns a status of 1 if any of the processes is not running.
|
# The function returns a status of 1 if any of the processes is not running.
|
||||||
openim::util::check_process_names() {
|
openim::util::check_process_names() {
|
||||||
|
# Function to get the port of a process
|
||||||
|
get_port() {
|
||||||
|
local pid=$1
|
||||||
|
if command -v ss > /dev/null 2>&1; then
|
||||||
|
# used ss comment
|
||||||
|
ss -ltnp 2>/dev/null | grep $pid | awk '{print $4}' | cut -d ':' -f2
|
||||||
|
else
|
||||||
|
# used netstat comment replace ss
|
||||||
|
netstat -ltnp 2>/dev/null | grep $pid | awk '{print $4}' | sed 's/.*://'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Arrays to collect details of processes
|
# Arrays to collect details of processes
|
||||||
local not_started=()
|
local not_started=()
|
||||||
local started=()
|
local started=()
|
||||||
@ -382,7 +398,7 @@ openim::util::check_process_names() {
|
|||||||
for pid in "${pids[@]}"; do
|
for pid in "${pids[@]}"; do
|
||||||
local command=$(ps -p $pid -o cmd=)
|
local command=$(ps -p $pid -o cmd=)
|
||||||
local start_time=$(ps -p $pid -o lstart=)
|
local start_time=$(ps -p $pid -o lstart=)
|
||||||
local port=$(ss -ltnp 2>/dev/null | grep $pid | awk '{print $4}' | cut -d ':' -f2)
|
local port=$(get_port $pid)
|
||||||
|
|
||||||
# Check if port information was found for the PID
|
# Check if port information was found for the PID
|
||||||
if [[ -z $port ]]; then
|
if [[ -z $port ]]; then
|
||||||
@ -419,6 +435,7 @@ openim::util::check_process_names() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# openim::util::check_process_names docker-pr
|
# openim::util::check_process_names docker-pr
|
||||||
|
|
||||||
# The `openim::util::stop_services_on_ports` function stops services running on specified ports.
|
# The `openim::util::stop_services_on_ports` function stops services running on specified ports.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user