parent
45f0a5445e
commit
e5724b32e1
@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
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.
|
@ -0,0 +1,13 @@
|
|||||||
|
Copyright © {{.Year}} {{.Holder}} 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.
|
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
|
||||||
|
bin_dir="../bin"
|
||||||
|
logs_dir="../logs"
|
||||||
|
sdk_db_dir="../db/sdk/"
|
||||||
|
#Automatically created when there is no bin, logs folder
|
||||||
|
if [ ! -d $bin_dir ]; then
|
||||||
|
mkdir -p $bin_dir
|
||||||
|
fi
|
||||||
|
if [ ! -d $logs_dir ]; then
|
||||||
|
mkdir -p $logs_dir
|
||||||
|
fi
|
||||||
|
if [ ! -d $sdk_db_dir ]; then
|
||||||
|
mkdir -p $sdk_db_dir
|
||||||
|
fi
|
||||||
|
|
||||||
|
#begin path
|
||||||
|
begin_path=$PWD
|
||||||
|
|
||||||
|
|
||||||
|
build_pid_array=()
|
||||||
|
|
||||||
|
for ((i = 0; i < ${#service_source_root[*]}; i++)); do
|
||||||
|
cd $begin_path
|
||||||
|
service_path=${service_source_root[$i]}
|
||||||
|
cd $service_path
|
||||||
|
make install > /dev/null &
|
||||||
|
build_pid=$!
|
||||||
|
build_pid_array[i]=$build_pid
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
echo "wait all build finish....."
|
||||||
|
|
||||||
|
success_num=0
|
||||||
|
for ((i = 0; i < ${#service_source_root[*]}; i++)); do
|
||||||
|
echo "wait pid: " ${build_pid_array[i]} ${service_names[$i]}
|
||||||
|
wait ${build_pid_array[i]}
|
||||||
|
stat=$?
|
||||||
|
echo ${service_names[$i]} "pid: " ${build_pid_array[i]} "stat: " $stat
|
||||||
|
if [ $stat == 0 ]
|
||||||
|
then
|
||||||
|
echo -e "${GREEN_PREFIX}${service_names[$i]} successfully be built ${COLOR_SUFFIX}\n"
|
||||||
|
let success_num=$success_num+1
|
||||||
|
|
||||||
|
else
|
||||||
|
echo -e "${RED_PREFIX}${service_names[$i]} build failed ${COLOR_SUFFIX}\n"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "success_num" $success_num "service num:" ${#service_source_root[*]}
|
||||||
|
if [ $success_num == ${#service_source_root[*]} ]
|
||||||
|
then
|
||||||
|
echo -e ${YELLOW_PREFIX}"all services build success"${COLOR_SUFFIX}
|
||||||
|
fi
|
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#fixme This scripts is the total startup scripts
|
||||||
|
#fixme The full name of the shell scripts that needs to be started is placed in the need_to_start_server_shell array
|
||||||
|
|
||||||
|
#fixme Put the shell scripts name here
|
||||||
|
need_to_start_server_shell=(
|
||||||
|
start_rpc_service.sh
|
||||||
|
msg_gateway_start.sh
|
||||||
|
push_start.sh
|
||||||
|
msg_transfer_start.sh
|
||||||
|
sdk_svr_start.sh
|
||||||
|
)
|
||||||
|
time=`date +"%Y-%m-%d %H:%M:%S"`
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========server start time:${time}===========">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
|
||||||
|
build_pid_array=()
|
||||||
|
idx=0
|
||||||
|
for i in ${need_to_start_server_shell[*]}; do
|
||||||
|
chmod +x $i
|
||||||
|
./$i &
|
||||||
|
build_pid=$!
|
||||||
|
echo "build_pid " $build_pid
|
||||||
|
build_pid_array[idx]=$build_pid
|
||||||
|
let idx=idx+1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "wait all start finish....."
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
success_num=0
|
||||||
|
for ((i = 0; i < ${#need_to_start_server_shell[*]}; i++)); do
|
||||||
|
echo "wait pid: " ${build_pid_array[i]} ${need_to_start_server_shell[$i]}
|
||||||
|
wait ${build_pid_array[i]}
|
||||||
|
stat=$?
|
||||||
|
echo ${build_pid_array[i]} " " $stat
|
||||||
|
if [ $stat == 0 ]
|
||||||
|
then
|
||||||
|
# echo -e "${GREEN_PREFIX}${need_to_start_server_shell[$i]} successfully be built ${COLOR_SUFFIX}\n"
|
||||||
|
let success_num=$success_num+1
|
||||||
|
|
||||||
|
else
|
||||||
|
#echo -e "${RED_PREFIX}${need_to_start_server_shell[$i]} build failed ${COLOR_SUFFIX}\n"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "success_num" $success_num "service num:" ${#need_to_start_server_shell[*]}
|
||||||
|
if [ $success_num == ${#need_to_start_server_shell[*]} ]
|
||||||
|
then
|
||||||
|
echo -e ${YELLOW_PREFIX}"all services build success"${COLOR_SUFFIX}
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
|
||||||
|
bin_dir="../bin"
|
||||||
|
logs_dir="../logs"
|
||||||
|
sdk_db_dir="../db/sdk/"
|
||||||
|
#Automatically created when there is no bin, logs folder
|
||||||
|
if [ ! -d $bin_dir ]; then
|
||||||
|
mkdir -p $bin_dir
|
||||||
|
fi
|
||||||
|
if [ ! -d $logs_dir ]; then
|
||||||
|
mkdir -p $logs_dir
|
||||||
|
fi
|
||||||
|
if [ ! -d $sdk_db_dir ]; then
|
||||||
|
mkdir -p $sdk_db_dir
|
||||||
|
fi
|
||||||
|
|
||||||
|
#begin path
|
||||||
|
begin_path=$PWD
|
||||||
|
|
||||||
|
for ((i = 0; i < ${#service_source_root[*]}; i++)); do
|
||||||
|
cd $begin_path
|
||||||
|
service_path=${service_source_root[$i]}
|
||||||
|
cd $service_path
|
||||||
|
make install
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${RED_PREFIX}${service_names[$i]} build failed ${COLOR_SUFFIX}\n"
|
||||||
|
exit -1
|
||||||
|
else
|
||||||
|
echo -e "${GREEN_PREFIX}${service_names[$i]} successfully be built ${COLOR_SUFFIX}\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo -e ${YELLOW_PREFIX}"all services build success"${COLOR_SUFFIX}
|
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
image=openim/open_im_server:v1.0.5
|
||||||
|
rm Open-IM-Server -rf
|
||||||
|
git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
|
||||||
|
cd Open-IM-Server
|
||||||
|
git checkout tuoyun
|
||||||
|
cd cmd/Open-IM-SDK-Core/
|
||||||
|
git checkout tuoyun
|
||||||
|
cd ../../
|
||||||
|
docker build -t $image . -f deploy.Dockerfile
|
||||||
|
docker push $image
|
@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
version=errcode
|
||||||
|
repository=${1}
|
||||||
|
if [[ -z ${repository} ]]
|
||||||
|
then
|
||||||
|
echo "repository is empty"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
set +e
|
||||||
|
echo "repository: ${repository}"
|
||||||
|
source ./path_info.cfg
|
||||||
|
echo "start to build docker images"
|
||||||
|
currentPwd=`pwd`
|
||||||
|
echo ${currentPwd}
|
||||||
|
i=0
|
||||||
|
for path in ${service_source_root[*]}
|
||||||
|
do
|
||||||
|
cd ${path}
|
||||||
|
make build
|
||||||
|
image="${repository}/${image_names[${i}]}:$version"
|
||||||
|
echo ${image}
|
||||||
|
docker build -t $image . -f ./deploy.Dockerfile
|
||||||
|
echo "build ${image} success"
|
||||||
|
docker push ${image}
|
||||||
|
echo "push ${image} success"
|
||||||
|
echo "=============================="
|
||||||
|
i=$((i + 1))
|
||||||
|
cd ${currentPwd}
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "build all images success"
|
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
service_port_name=(
|
||||||
|
openImWsPort
|
||||||
|
openImApiPort
|
||||||
|
openImUserPort
|
||||||
|
openImFriendPort
|
||||||
|
openImMessagePort
|
||||||
|
openImMessageGatewayPort
|
||||||
|
openImGroupPort
|
||||||
|
openImAuthPort
|
||||||
|
openImPushPort
|
||||||
|
openImConversationPort
|
||||||
|
openImThirdPort
|
||||||
|
)
|
||||||
|
for i in ${service_port_name[*]}; do
|
||||||
|
list=$(cat $config_path | grep -w ${i} | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string $list
|
||||||
|
for j in ${ports_array}; do
|
||||||
|
port=$(ss -tunlp| grep open_im | awk '{print $5}' | grep -w ${j} | awk -F '[:]' '{print $NF}')
|
||||||
|
if [[ ${port} -ne ${j} ]]; then
|
||||||
|
echo -e ${YELLOW_PREFIX}${i}${COLOR_SUFFIX}${RED_PREFIX}" service does not start normally,not initiated port is "${COLOR_SUFFIX}${YELLOW_PREFIX}${j}${COLOR_SUFFIX}
|
||||||
|
echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX}
|
||||||
|
exit -1
|
||||||
|
else
|
||||||
|
echo -e ${j}${GREEN_PREFIX}" port has been listening,belongs service is "${i}${COLOR_SUFFIX}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
#Check launched service process
|
||||||
|
check=$(ps aux | grep -w ./${msg_transfer_name} | grep -v grep | wc -l)
|
||||||
|
if [ $check -eq ${msg_transfer_service_num} ]; then
|
||||||
|
echo -e ${GREEN_PREFIX}"none port has been listening,belongs service is openImMsgTransfer"${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${RED_PREFIX}"openImMsgTransfer service does not start normally, num err"${COLOR_SUFFIX}
|
||||||
|
echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX}
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
check=$(ps aux | grep -w ./${cron_task_name} | grep -v grep | wc -l)
|
||||||
|
if [ $check -ge 1 ]; then
|
||||||
|
echo -e ${GREEN_PREFIX}"none port has been listening,belongs service is openImCronTask"${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${RED_PREFIX}"cron_task_name service does not start normally"${COLOR_SUFFIX}
|
||||||
|
echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX}
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e ${YELLOW_PREFIX}"all services launch success"${COLOR_SUFFIX}
|
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
echo "docker-compose ps..........................."
|
||||||
|
docker-compose ps
|
||||||
|
|
||||||
|
echo "check OpenIM, waiting 30s...................."
|
||||||
|
sleep 60
|
||||||
|
|
||||||
|
echo "check OpenIM................................"
|
||||||
|
./check_all.sh
|
||||||
|
# chmod +x ./enterprise/*.sh
|
||||||
|
# ./enterprise/check_all.sh
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#fixme This scripts is the total startup scripts
|
||||||
|
#fixme The full name of the shell scripts that needs to be started is placed in the need_to_start_server_shell array
|
||||||
|
|
||||||
|
#fixme Put the shell scripts name here
|
||||||
|
need_to_start_server_shell=(
|
||||||
|
start_rpc_service.sh
|
||||||
|
msg_gateway_start.sh
|
||||||
|
push_start.sh
|
||||||
|
msg_transfer_start.sh
|
||||||
|
sdk_svr_start.sh
|
||||||
|
start_cron.sh
|
||||||
|
)
|
||||||
|
|
||||||
|
#fixme The 10 second delay to start the project is for the docker-compose one-click to start openIM when the infrastructure dependencies are not started
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
time=`date +"%Y-%m-%d %H:%M:%S"`
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========server start time:${time}===========">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
for i in ${need_to_start_server_shell[*]}; do
|
||||||
|
chmod +x $i
|
||||||
|
./$i
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
#fixme prevents the openIM service exit after execution in the docker container
|
||||||
|
tail -f /dev/null
|
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./enterprise/path_info.cfg
|
||||||
|
source ./enterprise/function.sh
|
||||||
|
service_port_name=(
|
||||||
|
openImChatApiPort
|
||||||
|
openImAdminApiPort
|
||||||
|
#api port name
|
||||||
|
openImAdminPort
|
||||||
|
openImChatPort
|
||||||
|
)
|
||||||
|
|
||||||
|
for i in ${service_port_name[*]}; do
|
||||||
|
list=$(cat $config_path | grep -w ${i} | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string $list
|
||||||
|
for j in ${ports_array}; do
|
||||||
|
port=$(ss -tunlp| grep open_im | awk '{print $5}' | grep -w ${j} | awk -F '[:]' '{print $NF}')
|
||||||
|
if [[ ${port} -ne ${j} ]]; then
|
||||||
|
echo -e ${YELLOW_PREFIX}${i}${COLOR_SUFFIX}${RED_PREFIX}" service does not start normally,not initiated port is "${COLOR_SUFFIX}${YELLOW_PREFIX}${j}${COLOR_SUFFIX}
|
||||||
|
echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX}
|
||||||
|
exit -1
|
||||||
|
else
|
||||||
|
echo -e ${j}${GREEN_PREFIX}" port has been listening,belongs service is "${i}${COLOR_SUFFIX}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#input:[10023,2323,3434]
|
||||||
|
#output:10023 2323 3434
|
||||||
|
list_to_string(){
|
||||||
|
ports_list=$*
|
||||||
|
sub_s1=`echo $ports_list | sed 's/ //g'`
|
||||||
|
sub_s2=${sub_s1//,/ }
|
||||||
|
sub_s3=${sub_s2#*[}
|
||||||
|
sub_s4=${sub_s3%]*}
|
||||||
|
ports_array=$sub_s4
|
||||||
|
}
|
||||||
|
remove_space(){
|
||||||
|
value=$*
|
||||||
|
result=`echo $value | sed 's/ //g'`
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
#Don't put the space between "="
|
||||||
|
|
||||||
|
|
||||||
|
demo_server_name="open_im_chat_api"
|
||||||
|
demo_server_binary_root="../bin/"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#Global configuration file default dir
|
||||||
|
config_path="../.docker-compose_cfg/config.yaml"
|
||||||
|
|
||||||
|
#servicefile dir path
|
||||||
|
service_source_root=(
|
||||||
|
#api service file
|
||||||
|
../cmd/api/chat/
|
||||||
|
../cmd/api/admin/
|
||||||
|
#rpc service file
|
||||||
|
../cmd/rpc/admin/
|
||||||
|
../cmd/rpc/chat/
|
||||||
|
)
|
||||||
|
#service filename
|
||||||
|
service_names=(
|
||||||
|
#api service filename
|
||||||
|
open_im_chat_api
|
||||||
|
open_im_admin_api
|
||||||
|
#rpc service filename
|
||||||
|
open_im_admin
|
||||||
|
open_im_chat
|
||||||
|
)
|
@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source ./style_info.cfg
|
||||||
|
|
||||||
|
echo -e "check time synchronize.................................."
|
||||||
|
t=`curl http://time.akamai.com/?iso -s`
|
||||||
|
t1=`date -d $t +%s`
|
||||||
|
t2=`date +%s`
|
||||||
|
let between=t2-t1
|
||||||
|
if [[ $between -gt 10 ]] || [[ $between -lt -10 ]]; then
|
||||||
|
echo -e ${RED_PREFIX}"Warning: The difference between the iso time and the server's time is too large: "$between"s" ${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${GREEN_PREFIX} "ok: Server time is synchronized " ${COLOR_SUFFIX}
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "check login user........................................"
|
||||||
|
user=`whoami`
|
||||||
|
if [ $user == "root" ] ; then
|
||||||
|
echo -e ${GREEN_PREFIX} "ok: login user is root" ${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${RED_PREFIX}"Warning: The current user is not root "${COLOR_SUFFIX}
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "check docker............................................"
|
||||||
|
docker_running=`systemctl status docker | grep running | grep active | wc -l`
|
||||||
|
|
||||||
|
docker_version=`docker-compose -v; docker -v`
|
||||||
|
|
||||||
|
if [ $docker_running -gt 0 ]; then
|
||||||
|
echo -e ${GREEN_PREFIX} "ok: docker is running" ${COLOR_SUFFIX}
|
||||||
|
echo -e ${GREEN_PREFIX} $docker_version ${COLOR_SUFFIX}
|
||||||
|
|
||||||
|
else
|
||||||
|
echo -e ${RED_PREFIX}"docker not running"${COLOR_SUFFIX}
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "check environment......................................."
|
||||||
|
SYSTEM=`uname -s`
|
||||||
|
if [ $SYSTEM != "Linux" ] ; then
|
||||||
|
echo -e ${RED_PREFIX}"Warning: Currently only Linux is supported"${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${GREEN_PREFIX} "ok: system is linux"${COLOR_SUFFIX}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "check memory............................................"
|
||||||
|
available=`free -m | grep Mem | awk '{print $NF}'`
|
||||||
|
if [ $available -lt 2000 ] ; then
|
||||||
|
echo -e ${RED_PREFIX}"Warning: Your memory not enough, available is: " "$available"m${COLOR_SUFFIX}"\c"
|
||||||
|
echo -e ${RED_PREFIX}", must be greater than 2000m"${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${GREEN_PREFIX} "ok: available memory is: "$available"m${COLOR_SUFFIX}"
|
||||||
|
fi
|
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#input:[10023,2323,3434]
|
||||||
|
#output:10023 2323 3434
|
||||||
|
list_to_string(){
|
||||||
|
ports_list=$*
|
||||||
|
sub_s1=`echo $ports_list | sed 's/ //g'`
|
||||||
|
sub_s2=${sub_s1//,/ }
|
||||||
|
sub_s3=${sub_s2#*[}
|
||||||
|
sub_s4=${sub_s3%]*}
|
||||||
|
ports_array=$sub_s4
|
||||||
|
}
|
||||||
|
remove_space(){
|
||||||
|
value=$*
|
||||||
|
result=`echo $value | sed 's/ //g'`
|
||||||
|
}
|
@ -0,0 +1,77 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# ==============================================================================
|
||||||
|
#
|
||||||
|
# Store this file as .git/hooks/commit-msg in your repository in order to
|
||||||
|
# enforce checking for proper commit message format before actual commits.
|
||||||
|
# You may need to make the scripts executable by 'chmod +x .git/hooks/commit-msg'.
|
||||||
|
|
||||||
|
# commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint`
|
||||||
|
# go-gitlint --msg-file="$1"
|
||||||
|
|
||||||
|
# An example hook scripts to check the commit log message.
|
||||||
|
# Called by "git commit" with one argument, the name of the file
|
||||||
|
# that has the commit message. The hook should exit with non-zero
|
||||||
|
# status after issuing an appropriate message if it wants to stop the
|
||||||
|
# commit. The hook is allowed to edit the commit message file.
|
||||||
|
|
||||||
|
YELLOW="\e[93m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
RED="\e[31m"
|
||||||
|
ENDCOLOR="\e[0m"
|
||||||
|
|
||||||
|
printMessage() {
|
||||||
|
printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printSuccess() {
|
||||||
|
printf "${GREEN}OpenIM : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printError() {
|
||||||
|
printf "${RED}OpenIM : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printMessage "Running the OpenIM commit-msg hook."
|
||||||
|
|
||||||
|
# This example catches duplicate Signed-off-by lines.
|
||||||
|
|
||||||
|
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||||
|
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||||
|
echo >&2 Duplicate Signed-off-by lines.
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODO: go-gitlint dir set
|
||||||
|
GITLINT_DIR="./_output/tools/go-gitlint"
|
||||||
|
|
||||||
|
$GITLINT_DIR \
|
||||||
|
--msg-file=$1 \
|
||||||
|
--subject-regex="^(build|chore|ci|docs|feat|feature|fix|perf|refactor|revert|style|test)(.*)?:\s?.*" \
|
||||||
|
--subject-maxlen=150 \
|
||||||
|
--subject-minlen=10 \
|
||||||
|
--body-regex=".*" \
|
||||||
|
--max-parents=1
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
if ! command -v $GITLINT_DIR &>/dev/null; then
|
||||||
|
printError "$GITLINT_DIR not found. Please run 'make tools' OR 'make tools.verify.go-gitlint' make verto install it."
|
||||||
|
fi
|
||||||
|
printError "Please fix your commit message to match kubecub coding standards"
|
||||||
|
printError "https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md"
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -0,0 +1,112 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# ==============================================================================
|
||||||
|
# This is a pre-commit hook that ensures attempts to commit files that are
|
||||||
|
# are larger than $limit to your _local_ repo fail, with a helpful error message.
|
||||||
|
|
||||||
|
# You can override the default limit of 2MB by supplying the environment variable:
|
||||||
|
# GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB"
|
||||||
|
#
|
||||||
|
# ==============================================================================
|
||||||
|
#
|
||||||
|
|
||||||
|
LC_ALL=C
|
||||||
|
|
||||||
|
local_branch="$(git rev-parse --abbrev-ref HEAD)"
|
||||||
|
valid_branch_regex="^(main|master|develop)$|(feature|feat|release|hotfix|test|bug|ci|style|)\/[a-z0-9._-]+$|^HEAD$"
|
||||||
|
|
||||||
|
|
||||||
|
YELLOW="\e[93m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
RED="\e[31m"
|
||||||
|
ENDCOLOR="\e[0m"
|
||||||
|
|
||||||
|
printMessage() {
|
||||||
|
printf "${YELLOW}openim : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printSuccess() {
|
||||||
|
printf "${GREEN}openim : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printError() {
|
||||||
|
printf "${RED}openim : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printMessage "Running local openim pre-commit hook."
|
||||||
|
|
||||||
|
# flutter format .
|
||||||
|
# https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md
|
||||||
|
# TODO! GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB"
|
||||||
|
# Maximum file size limit in bytes
|
||||||
|
limit=${GIT_FILE_SIZE_LIMIT:-2000000} # Default 2MB
|
||||||
|
limitInMB=$(( $limit / 1000000 ))
|
||||||
|
|
||||||
|
function file_too_large(){
|
||||||
|
filename=$0
|
||||||
|
filesize=$(( $1 / 2**20 ))
|
||||||
|
|
||||||
|
cat <<HEREDOC
|
||||||
|
|
||||||
|
File $filename is $filesize MB, which is larger than github's maximum
|
||||||
|
file size (2 MB). We will not be able to push this file to GitHub.
|
||||||
|
Commit aborted
|
||||||
|
|
||||||
|
HEREDOC
|
||||||
|
git status
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Move to the repo root so git files paths make sense
|
||||||
|
repo_root=$( git rev-parse --show-toplevel )
|
||||||
|
cd $repo_root
|
||||||
|
|
||||||
|
empty_tree=$( git hash-object -t tree /dev/null )
|
||||||
|
|
||||||
|
if git rev-parse --verify HEAD > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
against=HEAD
|
||||||
|
else
|
||||||
|
against="$empty_tree"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set split so that for loop below can handle spaces in file names by splitting on line breaks
|
||||||
|
IFS='
|
||||||
|
'
|
||||||
|
|
||||||
|
shouldFail=false
|
||||||
|
for file in $( git diff-index --cached --name-only $against ); do
|
||||||
|
file_size=$(([ ! -f $file ] && echo 0) || (ls -la $file | awk '{ print $5 }'))
|
||||||
|
if [ "$file_size" -gt "$limit" ]; then
|
||||||
|
printError "File $file is $(( $file_size / 10**6 )) MB, which is larger than our configured limit of $limitInMB MB"
|
||||||
|
shouldFail=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if $shouldFail
|
||||||
|
then
|
||||||
|
printMessage "If you really need to commit this file, you can override the size limit by setting the GIT_FILE_SIZE_LIMIT environment variable, e.g. GIT_FILE_SIZE_LIMIT=42000000 for 42MB. Or, commit with the --no-verify switch to skip the check entirely."
|
||||||
|
printError "Commit aborted"
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! $local_branch =~ $valid_branch_regex ]]
|
||||||
|
then
|
||||||
|
printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.
|
||||||
|
Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again."
|
||||||
|
printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694"
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# ==============================================================================
|
||||||
|
#
|
||||||
|
|
||||||
|
YELLOW="\e[93m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
RED="\e[31m"
|
||||||
|
ENDCOLOR="\e[0m"
|
||||||
|
|
||||||
|
printMessage() {
|
||||||
|
printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printSuccess() {
|
||||||
|
printf "${GREEN}OpenIM : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printError() {
|
||||||
|
printf "${RED}OpenIM : $1${ENDCOLOR}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
printMessage "Running local OpenIM pre-push hook."
|
||||||
|
|
||||||
|
if [[ `git status --porcelain` ]]; then
|
||||||
|
printError "This scripts needs to run against committed code only. Please commit or stash you changes."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
#printMessage "Running the Flutter analyzer"
|
||||||
|
#flutter analyze
|
||||||
|
#
|
||||||
|
#if [ $? -ne 0 ]; then
|
||||||
|
# printError "Flutter analyzer error"
|
||||||
|
# exit 1
|
||||||
|
#fi
|
||||||
|
#
|
||||||
|
#printMessage "Finished running the Flutter analyzer"
|
@ -0,0 +1,11 @@
|
|||||||
|
echo "your user is:$USER"
|
||||||
|
echo "your password is:$PASSWORD"
|
||||||
|
echo "your minio endPoint is:$MINIO_ENDPOINT"
|
||||||
|
echo "your data dir is $DATA_DIR"
|
||||||
|
|
||||||
|
sed -i "/^\([[:space:]]*dbMysqlUserName: *\).*/s//\1$USER/;0,/\([[:space:]]*dbUserName: *\).*/s//\1 $USER/;/\([[:space:]]*accessKeyID: *\).*/s//\1 $USER/;/\([[:space:]]*endpoint: *\).*/s//\1\"abc\"/;" ../config/config.yaml
|
||||||
|
sed -i "/^\([[:space:]]*dbMysqlPassword: *\).*/s//\1$PASSWORD/;/\([[:space:]]*dbPassword: *\).*/s//\1$PASSWORD/;/\([[:space:]]*secret: *\).*/s//\1$PASSWORD/;/\([[:space:]]*secretAccessKey: *\).*/s//\1$PASSWORD/;" ../config/config.yaml
|
||||||
|
|
||||||
|
sed -i "/\([[:space:]]*endpoint: *\).*/s##\1$MINIO_ENDPOINT#;" ../config/config.yaml
|
||||||
|
sed -i "/\([[:space:]]*dbPassWord: *\).*/s//\1$PASSWORD/;" ../config/config.yaml
|
||||||
|
sed -i "/\([[:space:]]*secret: *\).*/s//\1$PASSWORD/;" ../.docker-compose_cfg/config.yaml
|
@ -0,0 +1,178 @@
|
|||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for common tasks
|
||||||
|
#
|
||||||
|
|
||||||
|
SHELL := /bin/bash
|
||||||
|
GO:=go
|
||||||
|
DIRS=$(shell ls)
|
||||||
|
DEBUG ?= 0
|
||||||
|
GIT_TAG := $(shell git describe --exact-match --tags --abbrev=0 2> /dev/null || echo untagged)
|
||||||
|
GIT_COMMIT ?= $(shell git rev-parse --short HEAD || echo "0.0.0")
|
||||||
|
BUILD_DATE ?=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') # Blank error: date '+%FT %T %z':"buildDate":"2023-03-31T 20:05:43 +0800"
|
||||||
|
|
||||||
|
# include the common makefile
|
||||||
|
COMMON_SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||||
|
|
||||||
|
SRC = $(shell find . -type f -name '*.go' -not -path "./vendor/*")
|
||||||
|
|
||||||
|
# ROOT_DIR: root directory of the code base
|
||||||
|
ifeq ($(origin ROOT_DIR),undefined)
|
||||||
|
ROOT_DIR := $(abspath $(shell cd $(COMMON_SELF_DIR)/../.. && pwd -P))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# OUTPUT_DIR: The directory where the build output is stored.
|
||||||
|
ifeq ($(origin OUTPUT_DIR),undefined)
|
||||||
|
OUTPUT_DIR := $(ROOT_DIR)/_output
|
||||||
|
$(shell mkdir -p $(OUTPUT_DIR))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# BIN_DIR: Directory where executable files are stored.
|
||||||
|
ifeq ($(origin BIN_DIR),undefined)
|
||||||
|
BIN_DIR := $(OUTPUT_DIR)/bin
|
||||||
|
$(shell mkdir -p $(BIN_DIR))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# TOOLS_DIR: The directory where tools are stored for build and testing.
|
||||||
|
ifeq ($(origin TOOLS_DIR),undefined)
|
||||||
|
TOOLS_DIR := $(OUTPUT_DIR)/tools
|
||||||
|
$(shell mkdir -p $(TOOLS_DIR))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# TMP_DIR: directory where temporary files are stored.
|
||||||
|
ifeq ($(origin TMP_DIR),undefined)
|
||||||
|
TMP_DIR := $(OUTPUT_DIR)/tmp
|
||||||
|
$(shell mkdir -p $(TMP_DIR))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(origin VERSION), undefined)
|
||||||
|
# VERSION := $(shell git describe --abbrev=0 --dirty --always --tags | sed 's/-/./g') #v2.3.3.dirty
|
||||||
|
VERSION := $(shell git describe --tags --always --match="v*" --dirty | sed 's/-/./g') #v2.3.3.631.g00abdc9b.dirty
|
||||||
|
# v2.3.3: git tag
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Check if the tree is dirty. default to dirty(maybe u should commit?)
|
||||||
|
GIT_TREE_STATE:="dirty"
|
||||||
|
ifeq (, $(shell git status --porcelain 2>/dev/null))
|
||||||
|
GIT_TREE_STATE="clean"
|
||||||
|
endif
|
||||||
|
GIT_COMMIT:=$(shell git rev-parse HEAD)
|
||||||
|
|
||||||
|
# Minimum test coverage
|
||||||
|
# can u use make cover COVERAGE=90
|
||||||
|
ifeq ($(origin COVERAGE),undefined)
|
||||||
|
COVERAGE := 60
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
|
||||||
|
ifeq (,$(shell go env GOBIN))
|
||||||
|
GOBIN=$(shell go env GOPATH)/bin
|
||||||
|
else
|
||||||
|
GOBIN=$(shell go env GOBIN)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# The OS must be linux when building docker images
|
||||||
|
PLATFORMS ?= linux_amd64 linux_arm64
|
||||||
|
# The OS can be linux/windows/darwin when building binaries
|
||||||
|
# PLATFORMS ?= darwin_amd64 windows_amd64 linux_amd64 linux_arm64
|
||||||
|
|
||||||
|
# only support linux
|
||||||
|
GOOS=linux
|
||||||
|
|
||||||
|
# set a specific PLATFORM, defaults to the host platform
|
||||||
|
ifeq ($(origin PLATFORM), undefined)
|
||||||
|
ifeq ($(origin GOARCH), undefined)
|
||||||
|
GOARCH := $(shell go env GOARCH)
|
||||||
|
endif
|
||||||
|
ifeq ($(origin GOARCH), undefined)
|
||||||
|
GOARCH := $(shell go env GOARCH)
|
||||||
|
endif
|
||||||
|
PLATFORM := $(GOOS)_$(GOARCH)
|
||||||
|
# Use linux as the default OS when building images
|
||||||
|
IMAGE_PLAT := linux_$(GOARCH)
|
||||||
|
else
|
||||||
|
# such as: PLATFORM = linux_amd64
|
||||||
|
GOOS := $(word 1, $(subst _, ,$(PLATFORM)))
|
||||||
|
GOARCH := $(word 2, $(subst _, ,$(PLATFORM)))
|
||||||
|
IMAGE_PLAT := $(PLATFORM)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Linux command settings
|
||||||
|
# TODO: Whether you need to join utils?
|
||||||
|
FIND := find . ! -path './utils/*' ! -path './vendor/*'
|
||||||
|
XARGS := xargs -r
|
||||||
|
|
||||||
|
# Linux command settings-CODE DIRS Copyright
|
||||||
|
CODE_DIRS := $(ROOT_DIR)/pkg $(ROOT_DIR)/cmd $(ROOT_DIR)/config $(ROOT_DIR)/db $(ROOT_DIR)/deploy $(ROOT_DIR)/deploy_k8s $(ROOT_DIR)/docker-compose_cfg $(ROOT_DIR)/internal $(ROOT_DIR)/scripts $(ROOT_DIR)/test
|
||||||
|
FINDS := find $(CODE_DIRS)
|
||||||
|
|
||||||
|
# Makefile settings: Select different behaviors by determining whether V option is set
|
||||||
|
ifndef V
|
||||||
|
MAKEFLAGS += --no-print-directory
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Copy githook scripts when execute makefile
|
||||||
|
# TODO! GIT_FILE_SIZE_LIMIT=42000000 git commit -m "This commit is allowed file sizes up to 42MB"
|
||||||
|
COPY_GITHOOK:=$(shell cp -f scripts/githooks/* .git/hooks/; chmod +x .git/hooks/*)
|
||||||
|
|
||||||
|
# COMMA: Concatenate multiple strings to form a list of strings
|
||||||
|
COMMA := ,
|
||||||
|
# SPACE: Used to separate strings
|
||||||
|
SPACE :=
|
||||||
|
# SPACE: Replace multiple consecutive Spaces with a single space
|
||||||
|
SPACE +=
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for common tasks
|
||||||
|
|
||||||
|
# Help information for the makefile package
|
||||||
|
define makehelp
|
||||||
|
@printf "\n\033[1mUsage: make <TARGETS> <OPTIONS> ...\033[0m\n\n\\033[1mTargets:\\033[0m\n\n"
|
||||||
|
@sed -n 's/^##//p' $< | awk -F':' '{printf "\033[36m%-28s\033[0m %s\n", $$1, $$2}' | sed -e 's/^/ /'
|
||||||
|
@printf "\n\033[1m$$USAGE_OPTIONS\033[0m\n"
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Here are some examples of builds
|
||||||
|
define MAKEFILE_EXAMPLE
|
||||||
|
# make build BINS=imctl Only a single imctl binary is built.
|
||||||
|
# make -j (nproc) all Run tidy gen add-copyright format lint cover build concurrently.
|
||||||
|
# make gen Generate all necessary files.
|
||||||
|
# make linux.arm64 imctl is compiled on arm64 platform.
|
||||||
|
# make verify-copyright Verify the license headers for all files.
|
||||||
|
# make install-deepcopy-gen Install deepcopy-gen tools if the license is missing.
|
||||||
|
# make build BINS=imctl V=1 DEBUG=1 Build debug binaries for only imctl.
|
||||||
|
# make multiarch PLATFORMS="linux_arm64 linux_amd64" V=1 Build binaries for both platforms.
|
||||||
|
endef
|
||||||
|
export MAKEFILE_EXAMPLE
|
||||||
|
|
||||||
|
# Define all help functions @printf "\n\033[1mCurrent imctl version information: $(shell imctl version):\033[0m\n\n"
|
||||||
|
define makeallhelp
|
||||||
|
@printf "\n\033[1mMake example:\033[0m\n\n"
|
||||||
|
$(call MAKEFILE_EXAMPLE)
|
||||||
|
@printf "\n\033[1mAriables:\033[0m\n\n"
|
||||||
|
@echo " DEBUG: $(DEBUG)"
|
||||||
|
@echo " BINS: $(BINS)"
|
||||||
|
@echo " PLATFORMS: $(PLATFORMS)"
|
||||||
|
@echo " V: $(V)"
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Help information for other makefile packages
|
||||||
|
CUT_OFF?="---------------------------------------------------------------------------------"
|
||||||
|
HELP_NAME:=$(shell basename $(MAKEFILE_LIST))
|
||||||
|
define smallhelp
|
||||||
|
@sed -n 's/^##//p' $< | awk -F':' '{printf "\033[36m%-35s\033[0m %s\n", $$1, $$2}' | sed -e 's/^/ /'
|
||||||
|
@echo $(CUT_OFF)
|
||||||
|
endef
|
@ -0,0 +1,57 @@
|
|||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# ==============================================================================
|
||||||
|
# wget https://github.com/google/addlicense/releases/download/v1.0.0/addlicense_1.0.0_Linux_x86_64.tar.gz
|
||||||
|
# Makefile helper functions for copyright
|
||||||
|
#
|
||||||
|
|
||||||
|
LICENSE_TEMPLATE ?= $(ROOT_DIR)/scripts/LICENSE/LICENSE_TEMPLATES
|
||||||
|
|
||||||
|
## copyright.verify: Validate boilerplate headers for assign files
|
||||||
|
.PHONY: copyright.verify
|
||||||
|
copyright.verify: tools.verify.addlicense
|
||||||
|
@echo "===========> Validate boilerplate headers for assign files starting in the $(ROOT_DIR) directory"
|
||||||
|
@$(TOOLS_DIR)/addlicense -v -check -ignore **/test/** -f $(LICENSE_TEMPLATE) $(CODE_DIRS)
|
||||||
|
@echo "===========> End of boilerplate headers check..."
|
||||||
|
|
||||||
|
## copyright.add: Add the boilerplate headers for all files
|
||||||
|
.PHONY: copyright.add
|
||||||
|
copyright.add: tools.verify.addlicense
|
||||||
|
@echo "===========> Adding $(LICENSE_TEMPLATE) the boilerplate headers for all files"
|
||||||
|
@$(TOOLS_DIR)/addlicense -y $(shell date +"%Y") -v -c "OpenIM." -f $(LICENSE_TEMPLATE) $(CODE_DIRS)
|
||||||
|
@echo "===========> End the copyright is added..."
|
||||||
|
|
||||||
|
# Addlicense Flags:
|
||||||
|
# -c string
|
||||||
|
# copyright holder (default "Google LLC")
|
||||||
|
# -check
|
||||||
|
# check only mode: verify presence of license headers and exit with non-zero code if missing
|
||||||
|
# -f string
|
||||||
|
# license file
|
||||||
|
# -ignore value
|
||||||
|
# file patterns to ignore, for example: -ignore **/*.go -ignore vendor/**
|
||||||
|
# -l string
|
||||||
|
# license type: apache, bsd, mit, mpl (default "apache")
|
||||||
|
# -s Include SPDX identifier in license header. Set -s=only to only include SPDX identifier.
|
||||||
|
# -skip value
|
||||||
|
# [deprecated: see -ignore] file extensions to skip, for example: -skip rb -skip go
|
||||||
|
# -v verbose mode: print the name of the files that are modified or were skipped
|
||||||
|
# -y string
|
||||||
|
# copyright year(s) (default "2023")
|
||||||
|
|
||||||
|
## copyright.help: Show copyright help
|
||||||
|
.PHONY: copyright.help
|
||||||
|
copyright.help: scripts/make-rules/copyright.mk
|
||||||
|
$(call smallhelp)
|
@ -0,0 +1,41 @@
|
|||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for dependencies
|
||||||
|
#
|
||||||
|
|
||||||
|
.PHONY: dependencies.run
|
||||||
|
dependencies.run: dependencies.packages dependencies.tools
|
||||||
|
|
||||||
|
.PHONY: dependencies.packages
|
||||||
|
dependencies.packages:
|
||||||
|
@$(GO) mod tidy
|
||||||
|
|
||||||
|
.PHONY: dependencies.tools
|
||||||
|
dependencies.tools: dependencies.tools.blocker dependencies.tools.critical
|
||||||
|
|
||||||
|
.PHONY: dependencies.tools.blocker
|
||||||
|
dependencies.tools.blocker: go.build.verify $(addprefix tools.verify., $(BLOCKER_TOOLS))
|
||||||
|
|
||||||
|
.PHONY: dependencies.tools.critical
|
||||||
|
dependencies.tools.critical: $(addprefix tools.verify., $(CRITICAL_TOOLS))
|
||||||
|
|
||||||
|
.PHONY: dependencies.tools.trivial
|
||||||
|
dependencies.tools.trivial: $(addprefix tools.verify., $(TRIVIAL_TOOLS))
|
||||||
|
|
||||||
|
## dependencies.help: Print help for dependencies targets
|
||||||
|
.PHONY: dependencies.help
|
||||||
|
dependencies.help: scripts/make-rules/dependencies.mk
|
||||||
|
$(call smallhelp)
|
@ -0,0 +1,82 @@
|
|||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for generate necessary files and docs
|
||||||
|
# https://cloud.redhat.com/blog/kubernetes-deep-dive-code-generation-customresources
|
||||||
|
# ! The stock of code generated by `make gen` should be idempotent
|
||||||
|
#
|
||||||
|
# Questions about go mod instead of go path: https://github.com/kubernetes/kubernetes/issues/117181
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for generate necessary files
|
||||||
|
#
|
||||||
|
|
||||||
|
.PHONY: gen.run
|
||||||
|
#gen.run: gen.errcode gen.docgo
|
||||||
|
gen.run: gen.clean gen.errcode gen.docgo.doc
|
||||||
|
|
||||||
|
.PHONY: gen.errcode
|
||||||
|
gen.errcode: gen.errcode.code gen.errcode.doc
|
||||||
|
|
||||||
|
.PHONY: gen.errcode.code
|
||||||
|
gen.errcode.code: tools.verify.codegen
|
||||||
|
@echo "===========> Generating iam error code go source files"
|
||||||
|
@codegen -type=int ${ROOT_DIR}/internal/pkg/code
|
||||||
|
|
||||||
|
.PHONY: gen.errcode.doc
|
||||||
|
gen.errcode.doc: tools.verify.codegen
|
||||||
|
@echo "===========> Generating error code markdown documentation"
|
||||||
|
@codegen -type=int -doc \
|
||||||
|
-output ${ROOT_DIR}/docs/guide/zh-CN/api/error_code_generated.md ${ROOT_DIR}/internal/pkg/code
|
||||||
|
|
||||||
|
.PHONY: gen.ca.%
|
||||||
|
gen.ca.%:
|
||||||
|
$(eval CA := $(word 1,$(subst ., ,$*)))
|
||||||
|
@echo "===========> Generating CA files for $(CA)"
|
||||||
|
@${ROOT_DIR}/scripts/gencerts.sh generate-iam-cert $(OUTPUT_DIR)/cert $(CA)
|
||||||
|
|
||||||
|
.PHONY: gen.ca
|
||||||
|
gen.ca: $(addprefix gen.ca., $(CERTIFICATES))
|
||||||
|
|
||||||
|
.PHONY: gen.docgo.doc
|
||||||
|
gen.docgo.doc:
|
||||||
|
@echo "===========> Generating missing doc.go for go packages"
|
||||||
|
@${ROOT_DIR}/scripts/gendoc.sh
|
||||||
|
|
||||||
|
.PHONY: gen.docgo.check
|
||||||
|
gen.docgo.check: gen.docgo.doc
|
||||||
|
@n="$$(git ls-files --others '*/doc.go' | wc -l)"; \
|
||||||
|
if test "$$n" -gt 0; then \
|
||||||
|
git ls-files --others '*/doc.go' | sed -e 's/^/ /'; \
|
||||||
|
echo "$@: untracked doc.go file(s) exist in working directory" >&2 ; \
|
||||||
|
false ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: gen.docgo.add
|
||||||
|
gen.docgo.add:
|
||||||
|
@git ls-files --others '*/doc.go' | $(XARGS) -- git add
|
||||||
|
|
||||||
|
.PHONY: gen.defaultconfigs
|
||||||
|
gen.defaultconfigs:
|
||||||
|
@${ROOT_DIR}/scripts/gen_default_config.sh
|
||||||
|
|
||||||
|
.PHONY: gen.clean
|
||||||
|
gen.clean:
|
||||||
|
@rm -rf ./api/client/{clientset,informers,listers}
|
||||||
|
@$(FIND) -type f -name '*_generated.go' -delete
|
||||||
|
|
||||||
|
## gen.help: show help for gen
|
||||||
|
.PHONY: gen.help
|
||||||
|
gen.help: scripts/make-rules/gen.mk
|
||||||
|
$(call smallhelp)
|
@ -0,0 +1,155 @@
|
|||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for docker image
|
||||||
|
# TODO: For the time being only used for compilation, it can be arm or amd, please do not delete it, it can be extended with new functions
|
||||||
|
# ==============================================================================
|
||||||
|
# Path: scripts/make-rules/image.mk
|
||||||
|
# docker registry: registry.example.com/namespace/image:tag as: registry.hub.docker.com/cubxxw/<image-name>:<tag>
|
||||||
|
#
|
||||||
|
|
||||||
|
DOCKER := docker
|
||||||
|
DOCKER_SUPPORTED_API_VERSION ?= 1.32|1.40|1.41
|
||||||
|
|
||||||
|
REGISTRY_PREFIX ?= cubxxw
|
||||||
|
BASE_IMAGE = centos:centos8
|
||||||
|
|
||||||
|
EXTRA_ARGS ?= --no-cache
|
||||||
|
_DOCKER_BUILD_EXTRA_ARGS :=
|
||||||
|
|
||||||
|
ifdef HTTP_PROXY
|
||||||
|
_DOCKER_BUILD_EXTRA_ARGS += --build-arg HTTP_PROXY=${HTTP_PROXY}
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(EXTRA_ARGS), )
|
||||||
|
_DOCKER_BUILD_EXTRA_ARGS += $(EXTRA_ARGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Determine image files by looking into build/docker/*/Dockerfile
|
||||||
|
IMAGES_DIR ?= $(wildcard ${ROOT_DIR}/build/docker/*)
|
||||||
|
# Determine images names by stripping out the dir names
|
||||||
|
IMAGES ?= $(filter-out tools,$(foreach image,${IMAGES_DIR},$(notdir ${image})))
|
||||||
|
|
||||||
|
# ifeq (${IMAGES},)
|
||||||
|
# $(error Could not determine IMAGES, set ROOT_DIR or run in source dir)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Image targets
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
## image.verify: Verify docker version
|
||||||
|
.PHONY: image.verify
|
||||||
|
image.verify:
|
||||||
|
$(eval API_VERSION := $(shell $(DOCKER) version | grep -E 'API version: {1,6}[0-9]' | head -n1 | awk '{print $$3} END { if (NR==0) print 0}' ))
|
||||||
|
$(eval PASS := $(shell echo "$(API_VERSION) > $(DOCKER_SUPPORTED_API_VERSION)" | bc))
|
||||||
|
@if [ $(PASS) -ne 1 ]; then \
|
||||||
|
$(DOCKER) -v ;\
|
||||||
|
echo "Unsupported docker version. Docker API version should be greater than $(DOCKER_SUPPORTED_API_VERSION)"; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
## image.daemon.verify: Verify docker daemon experimental features
|
||||||
|
.PHONY: image.daemon.verify
|
||||||
|
image.daemon.verify:
|
||||||
|
$(eval PASS := $(shell $(DOCKER) version | grep -q -E 'Experimental: {1,5}true' && echo 1 || echo 0))
|
||||||
|
@if [ $(PASS) -ne 1 ]; then \
|
||||||
|
echo "Experimental features of Docker daemon is not enabled. Please add \"experimental\": true in '/etc/docker/daemon.json' and then restart Docker daemon."; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
## image.build: Build docker images
|
||||||
|
.PHONY: image.build
|
||||||
|
image.build: image.verify go.build.verify $(addprefix image.build., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
||||||
|
|
||||||
|
## image.build.multiarch: Build docker images for all platforms
|
||||||
|
.PHONY: image.build.multiarch
|
||||||
|
image.build.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.build., $(addprefix $(p)., $(IMAGES))))
|
||||||
|
|
||||||
|
## image.build.%: Build docker image for a specific platform
|
||||||
|
.PHONY: image.build.%
|
||||||
|
image.build.%: go.build.%
|
||||||
|
$(eval IMAGE := $(COMMAND))
|
||||||
|
$(eval IMAGE_PLAT := $(subst _,/,$(PLATFORM)))
|
||||||
|
@echo "===========> Building docker image $(IMAGE) $(VERSION) for $(IMAGE_PLAT)"
|
||||||
|
@mkdir -p $(TMP_DIR)/$(IMAGE)
|
||||||
|
@cat $(ROOT_DIR)/build/docker/$(IMAGE)/Dockerfile\
|
||||||
|
| sed "s#BASE_IMAGE#$(BASE_IMAGE)#g" >$(TMP_DIR)/$(IMAGE)/Dockerfile
|
||||||
|
@cp $(OUTPUT_DIR)/platforms/$(IMAGE_PLAT)/$(IMAGE) $(TMP_DIR)/$(IMAGE)/
|
||||||
|
@DST_DIR=$(TMP_DIR)/$(IMAGE) $(ROOT_DIR)/build/docker/$(IMAGE)/build.sh 2>/dev/null || true
|
||||||
|
$(eval BUILD_SUFFIX := $(_DOCKER_BUILD_EXTRA_ARGS) --pull -t $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION) $(TMP_DIR)/$(IMAGE))
|
||||||
|
@if [ $(shell $(GO) env GOARCH) != $(ARCH) ] ; then \
|
||||||
|
$(MAKE) image.daemon.verify ;\
|
||||||
|
$(DOCKER) build --platform $(IMAGE_PLAT) $(BUILD_SUFFIX) ; \
|
||||||
|
else \
|
||||||
|
$(DOCKER) build $(BUILD_SUFFIX) ; \
|
||||||
|
fi
|
||||||
|
@rm -rf $(TMP_DIR)/$(IMAGE)
|
||||||
|
|
||||||
|
## image.push: Push docker images
|
||||||
|
.PHONY: image.push
|
||||||
|
image.push: image.verify go.build.verify $(addprefix image.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
||||||
|
|
||||||
|
## image.push.multiarch: Push docker images for all platforms
|
||||||
|
.PHONY: image.push.multiarch
|
||||||
|
image.push.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.push., $(addprefix $(p)., $(IMAGES))))
|
||||||
|
|
||||||
|
## image.push.%: Push docker image for a specific platform
|
||||||
|
.PHONY: image.push.%
|
||||||
|
image.push.%: image.build.%
|
||||||
|
@echo "===========> Pushing image $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX)"
|
||||||
|
$(DOCKER) push $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION)
|
||||||
|
|
||||||
|
## image.manifest.push: Push manifest list for multi-arch images
|
||||||
|
.PHONY: image.manifest.push
|
||||||
|
image.manifest.push: export DOCKER_CLI_EXPERIMENTAL := enabled
|
||||||
|
image.manifest.push: image.verify go.build.verify \
|
||||||
|
$(addprefix image.manifest.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
||||||
|
|
||||||
|
## image.manifest.push.%: Push manifest list for multi-arch images for a specific platform
|
||||||
|
.PHONY: image.manifest.push.%
|
||||||
|
image.manifest.push.%: image.push.% image.manifest.remove.%
|
||||||
|
@echo "===========> Pushing manifest $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
|
||||||
|
@$(DOCKER) manifest create $(REGISTRY_PREFIX)/$(IMAGE):$(VERSION) \
|
||||||
|
$(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION)
|
||||||
|
@$(DOCKER) manifest annotate $(REGISTRY_PREFIX)/$(IMAGE):$(VERSION) \
|
||||||
|
$(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION) \
|
||||||
|
--os $(OS) --arch ${ARCH}
|
||||||
|
@$(DOCKER) manifest push --purge $(REGISTRY_PREFIX)/$(IMAGE):$(VERSION)
|
||||||
|
|
||||||
|
# Docker cli has a bug: https://github.com/docker/cli/issues/954
|
||||||
|
# If you find your manifests were not updated,
|
||||||
|
# Please manually delete them in $HOME/.docker/manifests/
|
||||||
|
# and re-run.
|
||||||
|
## image.manifest.remove.%: Remove local manifest list
|
||||||
|
.PHONY: image.manifest.remove.%
|
||||||
|
image.manifest.remove.%:
|
||||||
|
@rm -rf ${HOME}/.docker/manifests/docker.io_$(REGISTRY_PREFIX)_$(IMAGE)-$(VERSION)
|
||||||
|
|
||||||
|
## image.manifest.push.multiarch: Push manifest list for multi-arch images for all platforms
|
||||||
|
.PHONY: image.manifest.push.multiarch
|
||||||
|
image.manifest.push.multiarch: image.push.multiarch $(addprefix image.manifest.push.multiarch., $(IMAGES))
|
||||||
|
|
||||||
|
## image.manifest.push.multiarch.%: Push manifest list for multi-arch images for all platforms for a specific image
|
||||||
|
.PHONY: image.manifest.push.multiarch.%
|
||||||
|
image.manifest.push.multiarch.%:
|
||||||
|
@echo "===========> Pushing manifest $* $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
|
||||||
|
REGISTRY_PREFIX=$(REGISTRY_PREFIX) PLATFROMS="$(PLATFORMS)" IMAGE=$* VERSION=$(VERSION) DOCKER_CLI_EXPERIMENTAL=enabled \
|
||||||
|
$(ROOT_DIR)/build/lib/create-manifest.sh
|
||||||
|
|
||||||
|
## image.help: Print help for image targets
|
||||||
|
.PHONY: image.help
|
||||||
|
image.help: scripts/make-rules/image.mk
|
||||||
|
$(call smallhelp)
|
@ -0,0 +1,42 @@
|
|||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for release
|
||||||
|
# Versions are used after merging
|
||||||
|
#
|
||||||
|
|
||||||
|
## release: release the project
|
||||||
|
.PHONY: release.run
|
||||||
|
release.run: release.verify release.ensure-tag
|
||||||
|
@scripts/release.sh
|
||||||
|
|
||||||
|
## release.verify: Check if a tool is installed and install it
|
||||||
|
.PHONY: release.verify
|
||||||
|
release.verify: tools.verify.git-chglog tools.verify.github-release tools.verify.coscmd
|
||||||
|
|
||||||
|
## release.tag: release the project
|
||||||
|
.PHONY: release.tag
|
||||||
|
release.tag: tools.verify.gsemver release.ensure-tag
|
||||||
|
@git push origin `git describe --tags --abbrev=0`
|
||||||
|
|
||||||
|
## release.ensure-tag: ensure tag
|
||||||
|
.PHONY: release.ensure-tag
|
||||||
|
release.ensure-tag: tools.verify.gsemver
|
||||||
|
@scripts/ensure_tag.sh
|
||||||
|
|
||||||
|
## release.help: Display help information about the release package
|
||||||
|
.PHONY: release.help
|
||||||
|
release.help: scripts/make-rules/release.mk
|
||||||
|
$(call smallhelp)
|
@ -0,0 +1,222 @@
|
|||||||
|
# Copyright © 2023 OpenIMSDK.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Makefile helper functions for tools(https://github.com/avelino/awesome-go) -> DIR: {TOOT_DIR}/tools | (go >= 1.19)
|
||||||
|
# Why download to the tools directory, thinking we might often switch Go versions using gvm.
|
||||||
|
#
|
||||||
|
|
||||||
|
# openim build use BUILD_TOOLS
|
||||||
|
BUILD_TOOLS ?= golangci-lint goimports addlicense deepcopy-gen conversion-gen ginkgo go-junit-report go-gitlint
|
||||||
|
# Code analysis tools
|
||||||
|
ANALYSIS_TOOLS = golangci-lint goimports golines go-callvis kube-score
|
||||||
|
# Code generation tools
|
||||||
|
GENERATION_TOOLS = deepcopy-gen conversion-gen protoc-gen-go cfssl rts codegen
|
||||||
|
# Testing tools
|
||||||
|
TEST_TOOLS = ginkgo go-junit-report gotests
|
||||||
|
# tenxun cos tools
|
||||||
|
COS_TOOLS = coscli coscmd
|
||||||
|
# Version control tools
|
||||||
|
VERSION_CONTROL_TOOLS = addlicense go-gitlint git-chglog github-release gsemver
|
||||||
|
# Utility tools
|
||||||
|
UTILITY_TOOLS = go-mod-outdated mockgen gothanks richgo kubeconform
|
||||||
|
# All tools
|
||||||
|
ALL_TOOLS ?= $(ANALYSIS_TOOLS) $(GENERATION_TOOLS) $(TEST_TOOLS) $(VERSION_CONTROL_TOOLS) $(UTILITY_TOOLS) $(COS_TOOLS)
|
||||||
|
|
||||||
|
## tools.install: Install a must tools
|
||||||
|
.PHONY: tools.install
|
||||||
|
tools.install: $(addprefix tools.verify., $(BUILD_TOOLS))
|
||||||
|
|
||||||
|
## tools.install-all: Install all tools
|
||||||
|
.PHONY: tools.install-all
|
||||||
|
tools.install-all: $(addprefix tools.install-all., $(ALL_TOOLS))
|
||||||
|
|
||||||
|
## tools.install.%: Install a single tool in $GOBIN/
|
||||||
|
.PHONY: tools.install.%
|
||||||
|
tools.install.%:
|
||||||
|
@echo "===========> Installing $,The default installation path is $(GOBIN)/$*"
|
||||||
|
@$(MAKE) install.$*
|
||||||
|
|
||||||
|
## tools.install-all.%: Parallelism install a single tool in ./tools/*
|
||||||
|
.PHONY: tools.install-all.%
|
||||||
|
tools.install-all.%:
|
||||||
|
@echo "===========> Installing $,The default installation path is $(TOOLS_DIR)/$*"
|
||||||
|
@$(MAKE) -j $(nproc) install.$*
|
||||||
|
|
||||||
|
## tools.verify.%: Check if a tool is installed and install it
|
||||||
|
.PHONY: tools.verify.%
|
||||||
|
tools.verify.%:
|
||||||
|
@echo "===========> Verifying $* is installed"
|
||||||
|
@if [ ! -f $(TOOLS_DIR)/$* ]; then GOBIN=$(TOOLS_DIR) $(MAKE) tools.install.$*; fi
|
||||||
|
@echo "===========> $* is install in $(TOOLS_DIR)/$*"
|
||||||
|
|
||||||
|
## install.golangci-lint: Install golangci-lint
|
||||||
|
.PHONY: install.golangci-lint
|
||||||
|
install.golangci-lint:
|
||||||
|
@$(GO) install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||||
|
|
||||||
|
## install.goimports: Install goimports, used to format go source files
|
||||||
|
.PHONY: install.goimports
|
||||||
|
install.goimports:
|
||||||
|
@$(GO) install golang.org/x/tools/cmd/goimports@latest
|
||||||
|
|
||||||
|
## install.addlicense: Install addlicense, used to add license header to source files
|
||||||
|
.PHONY: install.addlicense
|
||||||
|
install.addlicense:
|
||||||
|
@$(GO) install github.com/google/addlicense@latest
|
||||||
|
|
||||||
|
## install.deepcopy-gen: Install deepcopy-gen, used to generate deep copy functions
|
||||||
|
.PHONY: install.deepcopy-gen
|
||||||
|
install.deepcopy-gen:
|
||||||
|
@$(GO) install k8s.io/code-generator/cmd/deepcopy-gen@latest
|
||||||
|
|
||||||
|
## install.conversion-gen: Install conversion-gen, used to generate conversion functions
|
||||||
|
.PHONY: install.conversion-gen
|
||||||
|
install.conversion-gen:
|
||||||
|
@$(GO) install k8s.io/code-generator/cmd/conversion-gen@latest
|
||||||
|
|
||||||
|
## install.ginkgo: Install ginkgo to run a single test or set of tests
|
||||||
|
.PHONY: install.ginkgo
|
||||||
|
install.ginkgo:
|
||||||
|
@$(GO) install github.com/onsi/ginkgo/ginkgo@v1.16.2
|
||||||
|
|
||||||
|
## Install go-gitlint: Install go-gitlint, used to check git commit message
|
||||||
|
.PHONY: install.go-gitlint
|
||||||
|
install.go-gitlint:
|
||||||
|
@$(GO) install github.com/marmotedu/go-gitlint/cmd/go-gitlint@latest
|
||||||
|
|
||||||
|
## install.go-junit-report: Install go-junit-report, used to convert go test output to junit xml
|
||||||
|
.PHONY: install.go-junit-report
|
||||||
|
install.go-junit-report:
|
||||||
|
@$(GO) install github.com/jstemmer/go-junit-report@latest
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Tools that might be used include go gvm
|
||||||
|
#
|
||||||
|
|
||||||
|
## install.kube-score: Install kube-score, used to check kubernetes yaml files
|
||||||
|
.PHONY: install.kube-score
|
||||||
|
install.kube-score:
|
||||||
|
@$(GO) install github.com/zegl/kube-score/cmd/kube-score@latest
|
||||||
|
|
||||||
|
## install.kubeconform: Install kubeconform, used to check kubernetes yaml files
|
||||||
|
.PHONY: install.kubeconform
|
||||||
|
install.kubeconform:
|
||||||
|
@$(GO) install github.com/yannh/kubeconform/cmd/kubeconform@latest
|
||||||
|
|
||||||
|
## install.gsemver: Install gsemver, used to generate semver
|
||||||
|
.PHONY: install.gsemver
|
||||||
|
install.gsemver:
|
||||||
|
@$(GO) install github.com/arnaud-deprez/gsemver@latest
|
||||||
|
|
||||||
|
## install.git-chglog: Install git-chglog, used to generate changelog
|
||||||
|
.PHONY: install.git-chglog
|
||||||
|
install.git-chglog:
|
||||||
|
@$(GO) install github.com/git-chglog/git-chglog/cmd/git-chglog@latest
|
||||||
|
|
||||||
|
## install.github-release: Install github-release, used to create github release
|
||||||
|
.PHONY: install.github-release
|
||||||
|
install.github-release:
|
||||||
|
@$(GO) install github.com/github-release/github-release@latest
|
||||||
|
|
||||||
|
## install.coscli: Install coscli, used to upload files to cos
|
||||||
|
# example: ./coscli cp/sync -r /home/off-line/docker-off-line/ cos://openim-1306374445/openim/image/amd/off-line/off-line/ -e cos.ap-guangzhou.myqcloud.com
|
||||||
|
# https://cloud.tencent.com/document/product/436/71763
|
||||||
|
.PHONY: install.coscli
|
||||||
|
install.coscli:
|
||||||
|
@wget -q https://ghproxy.com/https://github.com/tencentyun/coscli/releases/download/v0.13.0-beta/coscli-linux -O ${TOOLS_DIR}/coscli
|
||||||
|
@chmod +x ${TOOLS_DIR}/coscli
|
||||||
|
|
||||||
|
## install.coscmd: Install coscmd, used to upload files to cos
|
||||||
|
.PHONY: install.coscmd
|
||||||
|
install.coscmd:
|
||||||
|
@if which pip &>/dev/null; then pip install coscmd; else pip3 install coscmd; fi
|
||||||
|
|
||||||
|
## install.delve: Install delve, used to debug go program
|
||||||
|
.PHONY: install.delve
|
||||||
|
install.delve:
|
||||||
|
@$(GO) install github.com/go-delve/delve/cmd/dlv@latest
|
||||||
|
|
||||||
|
## install.air: Install air, used to hot reload go program
|
||||||
|
.PHONY: install.air
|
||||||
|
install.air:
|
||||||
|
@$(GO) install github.com/cosmtrek/air@latest
|
||||||
|
|
||||||
|
## install.gvm: Install gvm, gvm is a Go version manager, built on top of the official go tool.
|
||||||
|
# github: https://github.com/moovweb/gvm
|
||||||
|
.PHONY: install.gvm
|
||||||
|
install.gvm:
|
||||||
|
@echo "===========> Installing gvm,The default installation path is ~/.gvm/scripts/gvm"
|
||||||
|
@bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
|
||||||
|
@$(shell source /root/.gvm/scripts/gvm)
|
||||||
|
|
||||||
|
## install.golines: Install golines, used to format long lines
|
||||||
|
.PHONY: install.golines
|
||||||
|
install.golines:
|
||||||
|
@$(GO) install github.com/segmentio/golines@latest
|
||||||
|
|
||||||
|
## install.go-mod-outdated: Install go-mod-outdated, used to check outdated dependencies
|
||||||
|
.PHONY: install.go-mod-outdated
|
||||||
|
install.go-mod-outdated:
|
||||||
|
@$(GO) install github.com/psampaz/go-mod-outdated@latest
|
||||||
|
|
||||||
|
## install.mockgen: Install mockgen, used to generate mock functions
|
||||||
|
.PHONY: install.mockgen
|
||||||
|
install.mockgen:
|
||||||
|
@$(GO) install github.com/golang/mock/mockgen@latest
|
||||||
|
|
||||||
|
## install.gotests: Install gotests, used to generate test functions
|
||||||
|
.PHONY: install.gotests
|
||||||
|
install.gotests:
|
||||||
|
@$(GO) install github.com/cweill/gotests/gotests@latest
|
||||||
|
|
||||||
|
## install.protoc-gen-go: Install protoc-gen-go, used to generate go source files from protobuf files
|
||||||
|
.PHONY: install.protoc-gen-go
|
||||||
|
install.protoc-gen-go:
|
||||||
|
@$(GO) install github.com/golang/protobuf/protoc-gen-go@latest
|
||||||
|
|
||||||
|
## install.cfssl: Install cfssl, used to generate certificates
|
||||||
|
.PHONY: install.cfssl
|
||||||
|
install.cfssl:
|
||||||
|
@$(ROOT_DIR)/scripts/install/install.sh iam::install::install_cfssl
|
||||||
|
|
||||||
|
## install.depth: Install depth, used to check dependency tree
|
||||||
|
.PHONY: install.depth
|
||||||
|
install.depth:
|
||||||
|
@$(GO) install github.com/KyleBanks/depth/cmd/depth@latest
|
||||||
|
|
||||||
|
## install.go-callvis: Install go-callvis, used to visualize call graph
|
||||||
|
.PHONY: install.go-callvis
|
||||||
|
install.go-callvis:
|
||||||
|
@$(GO) install github.com/ofabry/go-callvis@latest
|
||||||
|
|
||||||
|
## install.gothanks: Install gothanks, used to thank go dependencies
|
||||||
|
.PHONY: install.gothanks
|
||||||
|
install.gothanks:
|
||||||
|
@$(GO) install github.com/psampaz/gothanks@latest
|
||||||
|
|
||||||
|
## install.richgo: Install richgo
|
||||||
|
.PHONY: install.richgo
|
||||||
|
install.richgo:
|
||||||
|
@$(GO) install github.com/kyoh86/richgo@latest
|
||||||
|
|
||||||
|
## install.rts: Install rts
|
||||||
|
.PHONY: install.rts
|
||||||
|
install.rts:
|
||||||
|
@$(GO) install github.com/galeone/rts/cmd/rts@latest
|
||||||
|
|
||||||
|
## tools.help: Display help information about the tools package
|
||||||
|
.PHONY: tools.help
|
||||||
|
tools.help: scripts/make-rules/tools.mk
|
||||||
|
$(call smallhelp)
|
@ -0,0 +1,12 @@
|
|||||||
|
mongo -- "$MONGO_INITDB_DATABASE" <<EOF
|
||||||
|
db = db.getSiblingDB('admin')
|
||||||
|
db.auth('$MONGO_INITDB_ROOT_USERNAME', '$MONGO_INITDB_ROOT_PASSWORD')
|
||||||
|
db = db.getSiblingDB('$MONGO_INITDB_DATABASE')
|
||||||
|
db.createUser({
|
||||||
|
user: "$MONGO_USERNAME",
|
||||||
|
pwd: "$MONGO_PASSWORD",
|
||||||
|
roles: [
|
||||||
|
{ role: 'root', db: '$MONGO_INITDB_DATABASE' }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
EOF
|
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#Include shell font styles and some basic information
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
ulimit -n 200000
|
||||||
|
|
||||||
|
list1=$(cat $config_path | grep openImMessageGatewayPort | awk -F '[:]' '{print $NF}')
|
||||||
|
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
|
||||||
|
list3=$(cat $config_path | grep messageGatewayPrometheusPort | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string $list1
|
||||||
|
rpc_ports=($ports_array)
|
||||||
|
list_to_string $list2
|
||||||
|
ws_ports=($ports_array)
|
||||||
|
list_to_string $list3
|
||||||
|
prome_ports=($ports_array)
|
||||||
|
if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then
|
||||||
|
|
||||||
|
echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports or prome_ports in quantity!!!"${COLOR_SUFFIX}
|
||||||
|
exit -1
|
||||||
|
|
||||||
|
fi
|
||||||
|
#Check if the service exists
|
||||||
|
#If it is exists,kill this process
|
||||||
|
check=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | wc -l)
|
||||||
|
if [ $check -ge 1 ]; then
|
||||||
|
oldPid=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | awk '{print $2}')
|
||||||
|
kill -9 ${oldPid}
|
||||||
|
fi
|
||||||
|
#Waiting port recycling
|
||||||
|
sleep 1
|
||||||
|
cd ${msg_gateway_binary_root}
|
||||||
|
for ((i = 0; i < ${#ws_ports[@]}; i++)); do
|
||||||
|
echo "==========================start msg_gateway server===========================">>../logs/openIM.log
|
||||||
|
nohup ./${msg_gateway_name} --port ${rpc_ports[$i]} --ws_port ${ws_ports[$i]} --prometheus_port ${prome_ports[$i]} >>../logs/openIM.log 2>&1 &
|
||||||
|
done
|
||||||
|
|
||||||
|
#Check launched service process
|
||||||
|
sleep 3
|
||||||
|
check=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | wc -l)
|
||||||
|
allPorts=""
|
||||||
|
if [ $check -ge 1 ]; then
|
||||||
|
allNewPid=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | awk '{print $2}')
|
||||||
|
for i in $allNewPid; do
|
||||||
|
ports=$(netstat -netulp | grep -w ${i} | awk '{print $4}' | awk -F '[:]' '{print $NF}')
|
||||||
|
allPorts=${allPorts}"$ports "
|
||||||
|
done
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS"${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${msg_gateway_name}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allNewPid}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${YELLOW_PREFIX}${msg_gateway_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX}
|
||||||
|
fi
|
@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#Include shell font styles and some basic information
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
|
||||||
|
list1=$(cat $config_path | grep messageTransferPrometheusPort | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string $list1
|
||||||
|
prome_ports=($ports_array)
|
||||||
|
|
||||||
|
|
||||||
|
#Check if the service exists
|
||||||
|
#If it is exists,kill this process
|
||||||
|
check=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep| wc -l`
|
||||||
|
if [ $check -ge 1 ]
|
||||||
|
then
|
||||||
|
oldPid=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep|awk '{print $2}'`
|
||||||
|
kill -9 $oldPid
|
||||||
|
fi
|
||||||
|
#Waiting port recycling
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
cd ${msg_transfer_binary_root}
|
||||||
|
for ((i = 0; i < ${msg_transfer_service_num}; i++)); do
|
||||||
|
prome_port=${prome_ports[$i]}
|
||||||
|
cmd="nohup ./${msg_transfer_name}"
|
||||||
|
if [ $prome_port != "" ]; then
|
||||||
|
cmd="$cmd --prometheus_port $prome_port"
|
||||||
|
fi
|
||||||
|
echo "==========================start msg_transfer server===========================">>../logs/openIM.log
|
||||||
|
$cmd >>../logs/openIM.log 2>&1 &
|
||||||
|
done
|
||||||
|
|
||||||
|
#Check launched service process
|
||||||
|
check=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep| wc -l`
|
||||||
|
if [ $check -ge 1 ]
|
||||||
|
then
|
||||||
|
newPid=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep|awk '{print $2}'`
|
||||||
|
allPorts=""
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${msg_transfer_name}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${YELLOW_PREFIX}${msg_transfer_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX}
|
||||||
|
fi
|
@ -0,0 +1,92 @@
|
|||||||
|
#Don't put the space between "="
|
||||||
|
msg_gateway_name="open_im_msg_gateway"
|
||||||
|
msg_gateway_binary_root="../bin/"
|
||||||
|
msg_gateway_source_root="../cmd/msggateway/"
|
||||||
|
|
||||||
|
msg_name="open_im_msg"
|
||||||
|
msg_binary_root="../bin/"
|
||||||
|
msg_source_root="../cmd/rpc/msg/"
|
||||||
|
|
||||||
|
push_name="open_im_push"
|
||||||
|
push_binary_root="../bin/"
|
||||||
|
push_source_root="../cmd/push/"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
msg_transfer_name="open_im_msg_transfer"
|
||||||
|
msg_transfer_binary_root="../bin/"
|
||||||
|
msg_transfer_source_root="../cmd/msgtransfer/"
|
||||||
|
msg_transfer_service_num=4
|
||||||
|
|
||||||
|
|
||||||
|
sdk_server_name="open_im_sdk_server"
|
||||||
|
sdk_server_binary_root="../bin/"
|
||||||
|
sdk_server_source_root="../cmd/Open-IM-SDK-Core/"
|
||||||
|
|
||||||
|
|
||||||
|
cron_task_name="open_im_cron_task"
|
||||||
|
cron_task_binary_root="../bin/"
|
||||||
|
cron_task_source_root="../cmd/crontask/"
|
||||||
|
|
||||||
|
|
||||||
|
cmd_utils_name="open_im_cmd_utils"
|
||||||
|
cmd_utils_binary_root="../bin/"
|
||||||
|
cmd_utils_source_root="../cmd/cmduitls/"
|
||||||
|
|
||||||
|
#Global configuration file default dir
|
||||||
|
config_path="../config/config.yaml"
|
||||||
|
|
||||||
|
#servicefile dir path
|
||||||
|
service_source_root=(
|
||||||
|
#api service file
|
||||||
|
../cmd/api/
|
||||||
|
#rpc service file
|
||||||
|
../cmd/rpc/user/
|
||||||
|
../cmd/rpc/friend/
|
||||||
|
../cmd/rpc/group/
|
||||||
|
../cmd/rpc/auth/
|
||||||
|
../cmd/rpc/conversation/
|
||||||
|
../cmd/rpc/third/
|
||||||
|
../cmd/crontask
|
||||||
|
${msg_gateway_source_root}
|
||||||
|
${msg_transfer_source_root/}
|
||||||
|
${msg_source_root}
|
||||||
|
${push_source_root}
|
||||||
|
# ${sdk_server_source_root}
|
||||||
|
)
|
||||||
|
#service filename
|
||||||
|
service_names=(
|
||||||
|
#api service filename
|
||||||
|
open_im_api
|
||||||
|
#rpc service filename
|
||||||
|
open_im_user
|
||||||
|
open_im_friend
|
||||||
|
open_im_group
|
||||||
|
open_im_auth
|
||||||
|
open_im_conversation
|
||||||
|
open_im_third
|
||||||
|
open_im_cron_task
|
||||||
|
${msg_gateway_name}
|
||||||
|
${msg_transfer_name}
|
||||||
|
${msg_name}
|
||||||
|
${push_name}
|
||||||
|
# ${sdk_server_name}
|
||||||
|
)
|
||||||
|
|
||||||
|
image_names=(
|
||||||
|
#api service file
|
||||||
|
api
|
||||||
|
#rpc service file
|
||||||
|
user
|
||||||
|
friend
|
||||||
|
group
|
||||||
|
auth
|
||||||
|
conversation
|
||||||
|
third
|
||||||
|
cron_task
|
||||||
|
msg_gateway
|
||||||
|
msg_transfer
|
||||||
|
msg
|
||||||
|
push
|
||||||
|
# sdk_server
|
||||||
|
)
|
@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#Include shell font styles and some basic information
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
list1=$(cat $config_path | grep openImPushPort | awk -F '[:]' '{print $NF}')
|
||||||
|
list2=$(cat $config_path | grep pushPrometheusPort | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string $list1
|
||||||
|
rpc_ports=($ports_array)
|
||||||
|
list_to_string $list2
|
||||||
|
prome_ports=($ports_array)
|
||||||
|
|
||||||
|
#Check if the service exists
|
||||||
|
#If it is exists,kill this process
|
||||||
|
check=$(ps aux | grep -w ./${push_name} | grep -v grep | wc -l)
|
||||||
|
if [ $check -ge 1 ]; then
|
||||||
|
oldPid=$(ps aux | grep -w ./${push_name} | grep -v grep | awk '{print $2}')
|
||||||
|
kill -9 $oldPid
|
||||||
|
fi
|
||||||
|
#Waiting port recycling
|
||||||
|
sleep 1
|
||||||
|
cd ${push_binary_root}
|
||||||
|
|
||||||
|
for ((i = 0; i < ${#rpc_ports[@]}; i++)); do
|
||||||
|
echo "==========================start push server===========================">>../logs/openIM.log
|
||||||
|
nohup ./${push_name} --port ${rpc_ports[$i]} --prometheus_port ${prome_ports[$i]} >>../logs/openIM.log 2>&1 &
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 3
|
||||||
|
#Check launched service process
|
||||||
|
check=$(ps aux | grep -w ./${push_name} | grep -v grep | wc -l)
|
||||||
|
if [ $check -ge 1 ]; then
|
||||||
|
newPid=$(ps aux | grep -w ./${push_name} | grep -v grep | awk '{print $2}')
|
||||||
|
ports=$(netstat -netulp | grep -w ${newPid} | awk '{print $4}' | awk -F '[:]' '{print $NF}')
|
||||||
|
allPorts=""
|
||||||
|
|
||||||
|
for i in $ports; do
|
||||||
|
allPorts=${allPorts}"$i "
|
||||||
|
done
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX}
|
||||||
|
fi
|
@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#Include shell font styles and some basic information
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
ulimit -n 200000
|
||||||
|
|
||||||
|
ws_address=$(cat $config_path | grep openImWsAddress | awk -F '[ ]' '{print $NF}')
|
||||||
|
api_address=$(cat $config_path | grep openImApiAddress | awk -F '[ ]' '{print $NF}')
|
||||||
|
list3=$(cat $config_path | grep openImSdkWsPort | awk -F '[:]' '{print $NF}')
|
||||||
|
logLevel=$(cat $config_path | grep remainLogLevel | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string $list3
|
||||||
|
sdkws_ports=($ports_array)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#Check if the service exists
|
||||||
|
#If it is exists,kill this process
|
||||||
|
check=$(ps aux | grep -w ./${sdk_server_name} | grep -v grep | wc -l)
|
||||||
|
if [ $check -ge 1 ]; then
|
||||||
|
oldPid=$(ps aux | grep -w ./${sdk_server_name} | grep -v grep | awk '{print $2}')
|
||||||
|
kill -9 ${oldPid}
|
||||||
|
fi
|
||||||
|
#Waiting port recycling
|
||||||
|
sleep 1
|
||||||
|
cd ${sdk_server_binary_root}
|
||||||
|
echo "==========================start js sdk server===========================">>../logs/openIM.log
|
||||||
|
nohup ./${sdk_server_name} -openIM_ws_address ${ws_address} -sdk_ws_port ${sdkws_ports[0]} -openIM_api_address ${api_address} -openIM_log_level ${logLevel} >>../logs/openIM.log 2>&1 &
|
||||||
|
|
||||||
|
#Check launched service process
|
||||||
|
sleep 3
|
||||||
|
check=$(ps aux | grep -w ./${sdk_server_name} | grep -v grep | wc -l)
|
||||||
|
allPorts=""
|
||||||
|
if [ $check -ge 1 ]; then
|
||||||
|
allNewPid=$(ps aux | grep -w ./${sdk_server_name} | grep -v grep | awk '{print $2}')
|
||||||
|
for i in $allNewPid; do
|
||||||
|
ports=$(netstat -netulp | grep -w ${i} | awk '{print $4}' | awk -F '[:]' '{print $NF}')
|
||||||
|
allPorts=${allPorts}"$ports "
|
||||||
|
done
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${sdk_server_name}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allNewPid}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${YELLOW_PREFIX}${sdk_server_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR PLEASE CHECK openIM.log"${COLOR_SUFFIX}
|
||||||
|
fi
|
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#fixme This scripts is the total startup scripts
|
||||||
|
#fixme The full name of the shell scripts that needs to be started is placed in the need_to_start_server_shell array
|
||||||
|
|
||||||
|
#fixme Put the shell scripts name here
|
||||||
|
need_to_start_server_shell=(
|
||||||
|
start_rpc_service.sh
|
||||||
|
push_start.sh
|
||||||
|
msg_transfer_start.sh
|
||||||
|
# sdk_svr_start.sh
|
||||||
|
msg_gateway_start.sh
|
||||||
|
start_cron.sh
|
||||||
|
)
|
||||||
|
time=`date +"%Y-%m-%d %H:%M:%S"`
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========server start time:${time}===========">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
echo "==========================================================">>../logs/openIM.log 2>&1 &
|
||||||
|
|
||||||
|
for i in ${need_to_start_server_shell[*]}; do
|
||||||
|
chmod +x $i
|
||||||
|
echo "=====================exec ${i}======================">>../logs/openIM.log
|
||||||
|
./$i
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
done
|
@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#Include shell font styles and some basic information
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#Check if the service exists
|
||||||
|
#If it is exists,kill this process
|
||||||
|
check=`ps aux | grep -w ./${cron_task_name} | grep -v grep| wc -l`
|
||||||
|
if [ $check -ge 1 ]
|
||||||
|
then
|
||||||
|
oldPid=`ps aux | grep -w ./${cron_task_name} | grep -v grep|awk '{print $2}'`
|
||||||
|
kill -9 $oldPid
|
||||||
|
fi
|
||||||
|
#Waiting port recycling
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
cd ${cron_task_binary_root}
|
||||||
|
#for ((i = 0; i < ${cron_task_service_num}; i++)); do
|
||||||
|
echo "==========================start cron_task process===========================">>../logs/openIM.log
|
||||||
|
nohup ./${cron_task_name} >>../logs/openIM.log 2>&1 &
|
||||||
|
#done
|
||||||
|
|
||||||
|
#Check launched service process
|
||||||
|
check=`ps aux | grep -w ./${cron_task_name} | grep -v grep| wc -l`
|
||||||
|
if [ $check -ge 1 ]
|
||||||
|
then
|
||||||
|
newPid=`ps aux | grep -w ./${cron_task_name} | grep -v grep|awk '{print $2}'`
|
||||||
|
allPorts=""
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${cron_task_name}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX}
|
||||||
|
echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX}
|
||||||
|
else
|
||||||
|
echo -e ${YELLOW_PREFIX}${cron_task_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX}
|
||||||
|
fi
|
@ -0,0 +1,88 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
source ./function.sh
|
||||||
|
|
||||||
|
#service filename
|
||||||
|
service_filename=(
|
||||||
|
#api
|
||||||
|
open_im_api
|
||||||
|
#rpc
|
||||||
|
open_im_user
|
||||||
|
open_im_friend
|
||||||
|
open_im_group
|
||||||
|
open_im_auth
|
||||||
|
${msg_name}
|
||||||
|
open_im_conversation
|
||||||
|
open_im_third
|
||||||
|
)
|
||||||
|
|
||||||
|
#service config port name
|
||||||
|
service_port_name=(
|
||||||
|
#api port name
|
||||||
|
openImApiPort
|
||||||
|
#rpc port name
|
||||||
|
openImUserPort
|
||||||
|
openImFriendPort
|
||||||
|
openImGroupPort
|
||||||
|
openImAuthPort
|
||||||
|
openImMessagePort
|
||||||
|
openImConversationPort
|
||||||
|
openImThirdPort
|
||||||
|
)
|
||||||
|
|
||||||
|
service_prometheus_port_name=(
|
||||||
|
#api port name
|
||||||
|
openImApiPort
|
||||||
|
#rpc port name
|
||||||
|
userPrometheusPort
|
||||||
|
friendPrometheusPort
|
||||||
|
groupPrometheusPort
|
||||||
|
authPrometheusPort
|
||||||
|
messagePrometheusPort
|
||||||
|
conversationPrometheusPort
|
||||||
|
thirdPrometheusPort
|
||||||
|
)
|
||||||
|
|
||||||
|
for ((i = 0; i < ${#service_filename[*]}; i++)); do
|
||||||
|
#Check whether the service exists
|
||||||
|
service_name="ps -aux |grep -w ${service_filename[$i]} |grep -v grep"
|
||||||
|
count="${service_name}| wc -l"
|
||||||
|
|
||||||
|
if [ $(eval ${count}) -gt 0 ]; then
|
||||||
|
pid="${service_name}| awk '{print \$2}'"
|
||||||
|
echo "${service_filename[$i]} service has been started,pid:$(eval $pid)"
|
||||||
|
echo "killing the service ${service_filename[$i]} pid:$(eval $pid)"
|
||||||
|
#kill the service that existed
|
||||||
|
kill -9 $(eval $pid)
|
||||||
|
sleep 0.5
|
||||||
|
fi
|
||||||
|
cd ../bin
|
||||||
|
#Get the rpc port in the configuration file
|
||||||
|
portList=$(cat $config_path | grep ${service_port_name[$i]} | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string ${portList}
|
||||||
|
service_ports=($ports_array)
|
||||||
|
|
||||||
|
portList2=$(cat $config_path | grep ${service_prometheus_port_name[$i]} | awk -F '[:]' '{print $NF}')
|
||||||
|
list_to_string $portList2
|
||||||
|
prome_ports=($ports_array)
|
||||||
|
#Start related rpc services based on the number of ports
|
||||||
|
for ((j = 0; j < ${#service_ports[*]}; j++)); do
|
||||||
|
#Start the service in the background
|
||||||
|
if [ -z "${prome_ports[$j]}" ]; then
|
||||||
|
cmd="./${service_filename[$i]} --port ${service_ports[$j]}"
|
||||||
|
else
|
||||||
|
cmd="./${service_filename[$i]} --port ${service_ports[$j]} --prometheus_port ${prome_ports[$j]}"
|
||||||
|
fi
|
||||||
|
if [ $i -eq 0 -o $i -eq 1 ]; then
|
||||||
|
cmd="./${service_filename[$i]} --port ${service_ports[$j]}"
|
||||||
|
fi
|
||||||
|
echo $cmd
|
||||||
|
echo "=====================start ${service_filename[$i]}======================">>../logs/openIM.log
|
||||||
|
nohup $cmd >>../logs/openIM.log 2>&1 &
|
||||||
|
sleep 1
|
||||||
|
pid="netstat -ntlp|grep $j |awk '{printf \$7}'|cut -d/ -f1"
|
||||||
|
echo -e "${GREEN_PREFIX}${service_filename[$i]} start success,port number:${service_ports[$j]} pid:$(eval $pid)$COLOR_SUFFIX"
|
||||||
|
done
|
||||||
|
done
|
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#fixme This scripts is to stop the service
|
||||||
|
|
||||||
|
source ./style_info.cfg
|
||||||
|
source ./path_info.cfg
|
||||||
|
|
||||||
|
|
||||||
|
for i in ${service_names[*]}; do
|
||||||
|
#Check whether the service exists
|
||||||
|
name="ps -aux |grep -w $i |grep -v grep"
|
||||||
|
count="${name}| wc -l"
|
||||||
|
if [ $(eval ${count}) -gt 0 ]; then
|
||||||
|
pid="${name}| awk '{print \$2}'"
|
||||||
|
echo -e "${SKY_BLUE_PREFIX}Killing service:$i pid:$(eval $pid)${COLOR_SUFFIX}"
|
||||||
|
#kill the service that existed
|
||||||
|
kill -9 $(eval $pid)
|
||||||
|
echo -e "${SKY_BLUE_PREFIX}service:$i was killed ${COLOR_SUFFIX}"
|
||||||
|
fi
|
||||||
|
done
|
@ -0,0 +1,9 @@
|
|||||||
|
#Shell font formatting information
|
||||||
|
COLOR_SUFFIX="\033[0m"
|
||||||
|
BLACK_PREFIX="\033[30m"
|
||||||
|
RED_PREFIX="\033[31m"
|
||||||
|
GREEN_PREFIX="\033[32m"
|
||||||
|
YELLOW_PREFIX="\033[33m"
|
||||||
|
BLUE_PREFIX="\033[34m"
|
||||||
|
PURPLE_PREFIX="\033[35m"
|
||||||
|
SKY_BLUE_PREFIX="\033[36m"
|
Loading…
Reference in new issue