mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-10-28 14:42:14 +08:00
udpate
This commit is contained in:
parent
4e4c49405d
commit
810f3d2928
70
Makefile
70
Makefile
@ -244,3 +244,73 @@ help: Makefile
|
||||
.PHONY: help-all
|
||||
help-all: go.help copyright.help tools.help image.help dependencies.help gen.help release.help swagger.help help
|
||||
$(call makeallhelp)
|
||||
|
||||
#####
|
||||
#####
|
||||
#####
|
||||
|
||||
.PHONY:api
|
||||
api:
|
||||
@echo "${NOW} Starting to build api..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-api cmd/openim-api/main.go
|
||||
|
||||
.PHONY:gateway
|
||||
gateway:
|
||||
@echo "${NOW} Starting to build gateway..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-msg-gateway cmd/openim-msggateway/main.go
|
||||
|
||||
.PHONY:transfer
|
||||
transfer:
|
||||
@echo "${NOW} Starting to build transfer..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-msgtransfer cmd/openim-msgtransfer/main.go
|
||||
|
||||
.PHONY:push
|
||||
push:
|
||||
@echo "${NOW} Starting to build push..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-push cmd/openim-push/main.go
|
||||
|
||||
.PHONY:group
|
||||
group:
|
||||
@echo "${NOW} Starting to build rpc_group..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-group cmd/openim-rpc/openim-rpc-group/main.go
|
||||
|
||||
.PHONY:msg
|
||||
msg:
|
||||
@echo "${NOW} Starting to build rpc_msg..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-msg cmd/openim-rpc/openim-rpc-msg/main.go
|
||||
|
||||
.PHONY:user
|
||||
user:
|
||||
@echo "${NOW} Starting to build rpc_user..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-user cmd/openim-rpc/openim-rpc-user/main.go
|
||||
|
||||
.PHONY:conversation
|
||||
conversation:
|
||||
@echo "${NOW} Starting to build rpc_conversation..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-conversation cmd/openim-rpc/openim-rpc-conversation/main.go
|
||||
|
||||
.PHONY:friend
|
||||
friend:
|
||||
@echo "${NOW} Starting to build rpc_conversation..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-friend cmd/openim-rpc/openim-rpc-friend/main.go
|
||||
|
||||
.PHONY:third
|
||||
third:
|
||||
@echo "${NOW} Starting to build rpc_conversation..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-third cmd/openim-rpc/openim-rpc-third/main.go
|
||||
|
||||
.PHONY:auth
|
||||
auth:
|
||||
@echo "${NOW} Starting to build rpc_conversation..."
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH};go build -ldflags="-w -s" -o ./bin/openim-rpc-auth cmd/openim-rpc/openim-rpc-auth/main.go
|
||||
|
||||
.PHONY:build
|
||||
build: api gateway transfer push group msg user conversation friend third auth
|
||||
@echo "${NOW} Build done, files in ./bin as follow:"
|
||||
@ls -l bin | grep openim-
|
||||
|
||||
.PHONY:clean
|
||||
clean:
|
||||
@echo "${NOW} Starting to clean ..."
|
||||
rm -rf bin/openim-* && rm -rf logs
|
||||
@echo "${NOW} Clean done!"
|
||||
|
||||
@ -39,8 +39,11 @@ FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||
|
||||
WORKDIR /openim/openim-server
|
||||
|
||||
COPY --from=builder $OPENIM_SERVER_BINDIR/platforms /openim/openim-server/_output/bin/platforms
|
||||
COPY --from=builder ${SERVER_WORKDIR}/config /openim/openim-server/config
|
||||
# COPY --from=builder $OPENIM_SERVER_BINDIR/platforms /openim/openim-server/_output/bin/platforms
|
||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
||||
# COPY --from=builder ${SERVER_WORKDIR}/config /openim/openim-server/config
|
||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||
|
||||
|
||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-cmdutils /usr/bin/openim-cmdutils
|
||||
|
||||
|
||||
67
jenkins-deploy/component/kafka.yaml
Normal file
67
jenkins-deploy/component/kafka.yaml
Normal file
@ -0,0 +1,67 @@
|
||||
# kafka
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
namespace: social
|
||||
name: kafka
|
||||
labels:
|
||||
app: kafka
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: kafka
|
||||
template:
|
||||
metadata:
|
||||
name: kafka
|
||||
labels:
|
||||
app: kafka
|
||||
spec:
|
||||
containers:
|
||||
- name: kafka
|
||||
image: wurstmeister/kafka
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 9092
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: KAFKA_BROKER_ID
|
||||
value: "1" # Kafka Broker ID,从 0 开始递增
|
||||
- name: KAFKA_ZOOKEEPER_CONNECT
|
||||
value: "zookeeper:30001" # 连接到 ZooKeeper 服务的地址
|
||||
- name: KAFKA_ADVERTISED_HOST_NAME
|
||||
value: "kafka"
|
||||
- name: KAFKA_ADVERTISED_PORT
|
||||
value: "30032"
|
||||
- name: KAFKA_CREATE_TOPICS
|
||||
value: "latestMsgToRedis:8:1,msgToPush:8:1,offlineMsgToMongoMysql:8:1"
|
||||
# - name: KAFKA_LISTENERS
|
||||
# value: "INSIDE://:9092,OUTSIDE://:9093"
|
||||
# - name: KAFKA_ADVERTISED_LISTENERS
|
||||
# value: "INSIDE://:9092,OUTSIDE://:9093"
|
||||
# - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
|
||||
# value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"
|
||||
# - name: KAFKA_INTER_BROKER_LISTENER_NAME
|
||||
# value: "INSIDE"
|
||||
restartPolicy: Always
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: kafka
|
||||
namespace: social
|
||||
labels:
|
||||
name: kafka
|
||||
spec:
|
||||
selector:
|
||||
app: kafka
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 30032
|
||||
targetPort: 9092
|
||||
nodePort: 30032
|
||||
type: NodePort
|
||||
sessionAffinity: None
|
||||
|
||||
70
jenkins-deploy/component/minio.yaml
Normal file
70
jenkins-deploy/component/minio.yaml
Normal file
@ -0,0 +1,70 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
namespace: social
|
||||
name: minio
|
||||
labels:
|
||||
app: minio
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: minio
|
||||
template:
|
||||
metadata:
|
||||
name: minio
|
||||
labels:
|
||||
app: minio
|
||||
spec:
|
||||
containers:
|
||||
- name: minio
|
||||
image: minio/minio
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: MINIO_ROOT_USER
|
||||
value: "root"
|
||||
- name: MINIO_ROOT_PASSWORD
|
||||
value: "openIM123"
|
||||
args:
|
||||
- server
|
||||
- --console-address
|
||||
- :9001
|
||||
- /data
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
- containerPort: 9001
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /minio/health/ready
|
||||
port: 9000
|
||||
initialDelaySeconds: 120
|
||||
periodSeconds: 20
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /minio/health/live
|
||||
port: 9000
|
||||
initialDelaySeconds: 120
|
||||
periodSeconds: 20
|
||||
restartPolicy: Always
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: social
|
||||
namespace: social
|
||||
labels:
|
||||
name: social
|
||||
spec:
|
||||
selector:
|
||||
app: social
|
||||
ports:
|
||||
- name: minio-dashboard
|
||||
port: 30046
|
||||
targetPort: 9001
|
||||
nodePort: 30046
|
||||
- name: rpc
|
||||
port: 30047
|
||||
targetPort: 9000
|
||||
nodePort: 30047
|
||||
type: NodePort
|
||||
58
jenkins-deploy/component/mongo.yaml
Normal file
58
jenkins-deploy/component/mongo.yaml
Normal file
@ -0,0 +1,58 @@
|
||||
# mongo
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
namespace: social
|
||||
name: mongo
|
||||
labels:
|
||||
app: mongo
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: mongo
|
||||
template:
|
||||
metadata:
|
||||
name: mongo
|
||||
labels:
|
||||
app: mongo
|
||||
spec:
|
||||
containers:
|
||||
- name: mongo
|
||||
image: mongo:6.0.2
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 27017
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: MONGO_INITDB_ROOT_USERNAME
|
||||
value: root
|
||||
- name: MONGO_INITDB_ROOT_PASSWORD
|
||||
value: openIM123
|
||||
- name: MONGO_INITDB_DATABASE
|
||||
value: openIM_v3
|
||||
- name: MONGO_USERNAME
|
||||
value: root
|
||||
- name: MONGO_PASSWORD
|
||||
value: openIM123
|
||||
restartPolicy: Always
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mongo
|
||||
namespace: social
|
||||
labels:
|
||||
name: mongo
|
||||
spec:
|
||||
selector:
|
||||
app: mongo
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 30007
|
||||
targetPort: 27017
|
||||
nodePort: 30007
|
||||
type: NodePort
|
||||
sessionAffinity: None
|
||||
50
jenkins-deploy/component/mysql.yaml
Normal file
50
jenkins-deploy/component/mysql.yaml
Normal file
@ -0,0 +1,50 @@
|
||||
#mysql
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: mysql
|
||||
labels:
|
||||
app: mysql
|
||||
namespace: social
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: mysql
|
||||
template:
|
||||
metadata:
|
||||
name: mysql
|
||||
labels:
|
||||
app: mysql
|
||||
spec:
|
||||
containers:
|
||||
- name: mysql
|
||||
image: mysql:5.7
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 3306
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: MYSQL_ROOT_PASSWORD
|
||||
value: "openIM123"
|
||||
restartPolicy: Always
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mysql
|
||||
namespace: social
|
||||
labels:
|
||||
name: mysql
|
||||
spec:
|
||||
selector:
|
||||
app: mysql
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 30006
|
||||
targetPort: 3306
|
||||
nodePort: 30006
|
||||
type: NodePort
|
||||
sessionAffinity: None
|
||||
179
jenkins-deploy/component/mysql_dev.sql
Normal file
179
jenkins-deploy/component/mysql_dev.sql
Normal file
@ -0,0 +1,179 @@
|
||||
create DATABASE if not exists openIM_v3;
|
||||
|
||||
CREATE TABLE if not EXISTS `blacks` (
|
||||
`owner_user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`block_user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
`add_source` int(11) DEFAULT NULL,
|
||||
`operator_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
PRIMARY KEY (`owner_user_id`,`block_user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `chat_logs` (
|
||||
`server_msg_id` char(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`client_msg_id` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`send_id` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`recv_id` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`sender_platform_id` int(11) DEFAULT NULL,
|
||||
`sender_nick_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`sender_face_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`session_type` int(11) DEFAULT NULL,
|
||||
`msg_from` int(11) DEFAULT NULL,
|
||||
`content_type` int(11) DEFAULT NULL,
|
||||
`content` varchar(3000) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`status` int(11) DEFAULT NULL,
|
||||
`send_time` datetime(3) DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
KEY `sendTime` (`send_time`),
|
||||
KEY `send_id` (`send_time`,`send_id`),
|
||||
KEY `recv_id` (`send_time`,`recv_id`),
|
||||
KEY `session_type` (`send_time`,`session_type`),
|
||||
KEY `session_type_alone` (`session_type`),
|
||||
KEY `content_type` (`send_time`,`content_type`),
|
||||
KEY `content_type_alone` (`content_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `conversations` (
|
||||
`owner_user_id` char(128) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`conversation_id` char(128) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`conversation_type` int(11) DEFAULT NULL,
|
||||
`user_id` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`group_id` char(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`recv_msg_opt` int(11) DEFAULT NULL,
|
||||
`is_pinned` tinyint(1) DEFAULT NULL,
|
||||
`is_private_chat` tinyint(1) DEFAULT NULL,
|
||||
`burn_duration` int(11) DEFAULT '30',
|
||||
`group_at_type` int(11) DEFAULT NULL,
|
||||
`attached_info` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`max_seq` bigint(20) DEFAULT NULL,
|
||||
`min_seq` bigint(20) DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
`is_msg_destruct` tinyint(1) DEFAULT '0',
|
||||
`msg_destruct_time` bigint(20) DEFAULT '604800',
|
||||
`latest_msg_destruct_time` datetime(3) DEFAULT NULL,
|
||||
PRIMARY KEY (`owner_user_id`,`conversation_id`),
|
||||
KEY `create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `friend_requests` (
|
||||
`from_user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`to_user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`handle_result` int(11) DEFAULT NULL,
|
||||
`req_msg` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
`handler_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`handle_msg` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`handle_time` datetime(3) DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
PRIMARY KEY (`from_user_id`,`to_user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `friends` (
|
||||
`owner_user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`friend_user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
`add_source` int(11) DEFAULT NULL,
|
||||
`operator_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
PRIMARY KEY (`owner_user_id`,`friend_user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `group_members` (
|
||||
`group_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`nickname` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`user_group_face_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`role_level` int(11) DEFAULT NULL,
|
||||
`join_time` datetime(3) DEFAULT NULL,
|
||||
`join_source` int(11) DEFAULT NULL,
|
||||
`inviter_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`operator_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`mute_end_time` datetime(3) DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
PRIMARY KEY (`group_id`,`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `group_requests` (
|
||||
`user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`group_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`handle_result` int(11) DEFAULT NULL,
|
||||
`req_msg` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`handle_msg` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`req_time` datetime(3) DEFAULT NULL,
|
||||
`handle_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`handle_time` datetime(3) DEFAULT NULL,
|
||||
`join_source` int(11) DEFAULT NULL,
|
||||
`inviter_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
PRIMARY KEY (`user_id`,`group_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `groups` (
|
||||
`group_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`notification` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`introduction` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`face_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
`ex` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`status` int(11) DEFAULT NULL,
|
||||
`creator_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`group_type` int(11) DEFAULT NULL,
|
||||
`need_verification` int(11) DEFAULT NULL,
|
||||
`look_member_info` int(11) DEFAULT NULL,
|
||||
`apply_member_friend` int(11) DEFAULT NULL,
|
||||
`notification_update_time` datetime(3) DEFAULT NULL,
|
||||
`notification_user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
PRIMARY KEY (`group_id`),
|
||||
KEY `create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `object_hash` (
|
||||
`hash` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`engine` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`size` bigint(20) DEFAULT NULL,
|
||||
`bucket` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`name` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
PRIMARY KEY (`hash`,`engine`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `object_info` (
|
||||
`name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`hash` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`content_type` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`valid_time` datetime(3) DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
PRIMARY KEY (`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `object_put` (
|
||||
`put_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`hash` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`path` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`name` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`content_type` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`object_size` bigint(20) DEFAULT NULL,
|
||||
`fragment_size` bigint(20) DEFAULT NULL,
|
||||
`put_urls_hash` longtext COLLATE utf8mb4_unicode_ci,
|
||||
`valid_time` datetime(3) DEFAULT NULL,
|
||||
`effective_time` datetime(3) DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
PRIMARY KEY (`put_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE if not EXISTS `users` (
|
||||
`user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`face_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`ex` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`create_time` datetime(3) DEFAULT NULL,
|
||||
`app_manger_level` int(11) DEFAULT '18',
|
||||
`global_recv_msg_opt` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`user_id`),
|
||||
KEY `create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
52
jenkins-deploy/component/redis.yaml
Normal file
52
jenkins-deploy/component/redis.yaml
Normal file
@ -0,0 +1,52 @@
|
||||
# redis
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: redis
|
||||
labels:
|
||||
app: redis
|
||||
namespace: social
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: redis
|
||||
template:
|
||||
metadata:
|
||||
name: redis
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
containers:
|
||||
- name: redis
|
||||
image: redis:7.0.0
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
protocol: TCP
|
||||
# env:
|
||||
# - name: REDIS_PASSWORD
|
||||
# value: "openIM123"
|
||||
restartPolicy: Always
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: redis
|
||||
namespace: social
|
||||
labels:
|
||||
name: redis
|
||||
spec:
|
||||
selector:
|
||||
app: redis
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 30029
|
||||
targetPort: 6379
|
||||
nodePort: 30029
|
||||
type: NodePort
|
||||
sessionAffinity: None
|
||||
|
||||
|
||||
48
jenkins-deploy/component/zookeeper.yaml
Normal file
48
jenkins-deploy/component/zookeeper.yaml
Normal file
@ -0,0 +1,48 @@
|
||||
#zk
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: zookeeper
|
||||
labels:
|
||||
app: zookeeper
|
||||
namespace: social
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: zookeeper
|
||||
template:
|
||||
metadata:
|
||||
name: zookeeper
|
||||
labels:
|
||||
app: zookeeper
|
||||
spec:
|
||||
containers:
|
||||
- name: zookeeper:latest
|
||||
image: wurstmeister/zookeeper
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 2181
|
||||
protocol: TCP
|
||||
restartPolicy: Always
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: zookeeper
|
||||
namespace: social
|
||||
labels:
|
||||
name: zookeeper
|
||||
spec:
|
||||
selector:
|
||||
app: zookeeper
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 30001
|
||||
targetPort: 2181
|
||||
nodePort: 30001
|
||||
type: NodePort
|
||||
sessionAffinity: None
|
||||
|
||||
19
jenkins-deploy/dockerfile/api.Dockerfile
Normal file
19
jenkins-deploy/dockerfile/api.Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make api
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10002
|
||||
CMD ["./bin/openim-api","--port", "10002"]
|
||||
20
jenkins-deploy/dockerfile/msg_gateway.Dockerfile
Normal file
20
jenkins-deploy/dockerfile/msg_gateway.Dockerfile
Normal file
@ -0,0 +1,20 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt && make tidy
|
||||
RUN make gateway
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
#Copy binary files to the blank image
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10140
|
||||
EXPOSE 10001
|
||||
CMD ["./bin/openim-rpc-msg-gateway","--port", "10140","--ws_port", "10001"]
|
||||
18
jenkins-deploy/dockerfile/msg_transfer.Dockerfile
Normal file
18
jenkins-deploy/dockerfile/msg_transfer.Dockerfile
Normal file
@ -0,0 +1,18 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt && make tidy
|
||||
RUN make transfer
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
#Copy binary files to the blank image
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
CMD ["./bin/openim-msgtransfer"]
|
||||
19
jenkins-deploy/dockerfile/push.Dockerfile
Normal file
19
jenkins-deploy/dockerfile/push.Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make push
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10170
|
||||
CMD ["./bin/openim-push","--port", "10170"]
|
||||
19
jenkins-deploy/dockerfile/rpc_auth.Dockerfile
Normal file
19
jenkins-deploy/dockerfile/rpc_auth.Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make auth
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10002
|
||||
CMD ["./bin/openim-api","--port", "10160"]
|
||||
20
jenkins-deploy/dockerfile/rpc_conversation.Dockerfile
Normal file
20
jenkins-deploy/dockerfile/rpc_conversation.Dockerfile
Normal file
@ -0,0 +1,20 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make conversation
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10230
|
||||
CMD ["./bin/openim-rpc-conversation","--port", "10230"]
|
||||
|
||||
19
jenkins-deploy/dockerfile/rpc_friend.Dockerfile
Normal file
19
jenkins-deploy/dockerfile/rpc_friend.Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make friend
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10002
|
||||
CMD ["./bin/openim-api","--port", "10120"]
|
||||
19
jenkins-deploy/dockerfile/rpc_group.Dockerfile
Normal file
19
jenkins-deploy/dockerfile/rpc_group.Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make group
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10150
|
||||
CMD ["./bin/openim-rpc-group","--port", "10150"]
|
||||
20
jenkins-deploy/dockerfile/rpc_msg.Dockerfile
Normal file
20
jenkins-deploy/dockerfile/rpc_msg.Dockerfile
Normal file
@ -0,0 +1,20 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make msg
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10130
|
||||
CMD ["./bin/openim-rpc-msg","--port", "10130"]
|
||||
|
||||
19
jenkins-deploy/dockerfile/rpc_third.Dockerfile
Normal file
19
jenkins-deploy/dockerfile/rpc_third.Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make third
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10002
|
||||
CMD ["./bin/openim-api","--port", "10200"]
|
||||
20
jenkins-deploy/dockerfile/rpc_user.Dockerfile
Normal file
20
jenkins-deploy/dockerfile/rpc_user.Dockerfile
Normal file
@ -0,0 +1,20 @@
|
||||
FROM golang:1.18.0 as build
|
||||
|
||||
WORKDIR /openim
|
||||
COPY . .
|
||||
|
||||
RUN make fmt \
|
||||
&& make tidy
|
||||
RUN make user
|
||||
|
||||
FROM ubuntu
|
||||
|
||||
WORKDIR /openim
|
||||
VOLUME ["/openim/logs","/openim/bin"]
|
||||
|
||||
COPY --from=build /openim/bin /openim/bin
|
||||
COPY --from=build /openim/config /openim/config
|
||||
|
||||
EXPOSE 10110
|
||||
CMD ["./bin/openim-rpc-user","--port", "10110"]
|
||||
|
||||
129
jenkins-deploy/jenkinsfiles/api.jenkinsfile
Normal file
129
jenkins-deploy/jenkinsfiles/api.jenkinsfile
Normal file
@ -0,0 +1,129 @@
|
||||
pipeline {
|
||||
agent any
|
||||
// agent {
|
||||
// node {
|
||||
// label 'jnlp-slave'
|
||||
// }
|
||||
// }
|
||||
environment {
|
||||
JOB_ENV = "social" // namespace
|
||||
DEPLOYMENT_NAME = "api" // k8s deploy name
|
||||
CONFIGMAP_NAME = "${DEPLOYMENT_NAME}-conf" // runtime conf
|
||||
JOB_NAME = "${JOB_NAME}" // jenkins job name
|
||||
GIT_URL = "https://github.com/truongpx396/k8s-jenkins" // gitlab or github codebase
|
||||
CREDENTIALS_ID = "GitHub" // need configure it in jenkins, will use it's username and password to pull codebase
|
||||
HARBOR_URL = "truongpx396" // docker harbor url
|
||||
HARBOR_ID = "" // docker harbor id, will use it to login
|
||||
DOCKER_CPU = "100m"
|
||||
DOCKER_MEM = "200Mi"
|
||||
BASEDIR = "."
|
||||
BUILD_NUM = "${BUILD_NUMBER}"
|
||||
CONF_PATH = "/openim/config/"
|
||||
}
|
||||
parameters {
|
||||
gitParameter(
|
||||
branch: '',
|
||||
branchFilter: 'origin/(.*)',
|
||||
defaultValue: 'main',
|
||||
description: '',
|
||||
name: 'RELEASE_BRANCH',
|
||||
quickFilterEnabled: false,
|
||||
selectedValue: 'NONE',
|
||||
sortMode: 'NONE',
|
||||
tagFilter: '*',
|
||||
type: 'PT_BRANCH'
|
||||
)
|
||||
extendedChoice(
|
||||
name: "RELEASE_PROJECTS",
|
||||
type: "PT_RADIO",
|
||||
multiSelectDelimiter: " ",
|
||||
value: """api,msg_gateway,msg_transfer,push,rpc_conversation,rpc_group,rpc_msg,rpc_user""",
|
||||
defaultValue: "",
|
||||
description: "please choice projects to deploy"
|
||||
)
|
||||
}
|
||||
stages {
|
||||
stage('Git') {
|
||||
steps {
|
||||
checkout([$class: 'GitSCM',
|
||||
branches: [[name: "${params.RELEASE_BRANCH}"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [],
|
||||
gitTool: 'Default',
|
||||
submoduleCfg: [],
|
||||
userRemoteConfigs: [[url: "${GIT_URL}", credentialsId: "${CREDENTIALS_ID}"]]
|
||||
])
|
||||
}
|
||||
}
|
||||
stage('CommitHash') {
|
||||
steps {
|
||||
script {
|
||||
env.CommitHash = sh (script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Check Param') {
|
||||
steps {
|
||||
script {
|
||||
def releaseParams = "${params.RELEASE_PROJECTS}"
|
||||
def tag = "${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}"
|
||||
def selectEnv = "${params.SERVICE_ENV}"
|
||||
if(releaseParams) {
|
||||
echo "============================================="
|
||||
echo "projects: $releaseParams"
|
||||
echo "tag: $tag"
|
||||
echo "selectEnv: $selectEnv"
|
||||
echo "============================================="
|
||||
} else {
|
||||
echo "============================================="
|
||||
echo "invalid release projects!!! stop now!!!"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Docker Build') {
|
||||
steps {
|
||||
// container ('docker') {
|
||||
// withCredentials([usernamePassword(credentialsId: "${HARBOR_ID}", passwordVariable: 'password', usernameVariable: 'username')]) {
|
||||
// sh """
|
||||
// docker build -t ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} -f ${BASEDIR}/deploy/dockerfile/${params.RELEASE_PROJECTS}.Dockerfile .
|
||||
// docker tag ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
|
||||
// docker login -u ${username} -p ${password} ${HARBOR_URL}
|
||||
|
||||
// docker push ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
// docker rmi ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
// docker rmi ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
// """
|
||||
// }
|
||||
// }
|
||||
withDockerRegistry([ credentialsId: "DockerHub", url: "" ]){
|
||||
sh """
|
||||
echo `Build image ...`
|
||||
docker build -t ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} -f ${BASEDIR}/dockerfile/${params.RELEASE_PROJECTS}.Dockerfile .
|
||||
docker tag ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
|
||||
echo `Push image ...`
|
||||
docker push ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
|
||||
echo `Start removing image ...1.`
|
||||
docker rmi ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
docker rmi ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
echo `Done removing image!`
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
// stage('Deploy') {
|
||||
// steps {
|
||||
// container ('helm-kubectl') {
|
||||
// sh """
|
||||
// envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/default-configMap-test.yaml | kubectl apply -f -
|
||||
// envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/default-namespace-test.yaml | kubectl apply -f -
|
||||
// envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/api.yaml | kubectl apply -f - && kubectl rollout status -f -
|
||||
// """
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
113
jenkins-deploy/jenkinsfiles/gateway.jenkinsfile
Normal file
113
jenkins-deploy/jenkinsfiles/gateway.jenkinsfile
Normal file
@ -0,0 +1,113 @@
|
||||
pipeline {
|
||||
agent {
|
||||
node {
|
||||
label 'jnlp-slave'
|
||||
}
|
||||
}
|
||||
environment {
|
||||
JOB_ENV = "social" // namespace
|
||||
DEPLOYMENT_NAME = "gateway" // k8s deploy name
|
||||
CONFIGMAP_NAME = "${DEPLOYMENT_NAME}-conf" // runtime conf
|
||||
JOB_NAME = "${JOB_NAME}" // jenkins job name
|
||||
GIT_URL = "" // gitlab or github codebase
|
||||
CREDENTIALS_ID = "" // need configure it in jenkins, will use it's username and password to pull codebase
|
||||
HARBOR_URL = "" // docker harbor url
|
||||
HARBOR_ID = "" // docker harbor id, will use it to login
|
||||
DOCKER_CPU = "100m"
|
||||
DOCKER_MEM = "200Mi"
|
||||
BASEDIR = "."
|
||||
BUILD_NUM = "${BUILD_NUMBER}"
|
||||
CONF_PATH = "/openim/config/"
|
||||
}
|
||||
parameters {
|
||||
gitParameter(
|
||||
branch: '',
|
||||
branchFilter: 'origin/(.*)',
|
||||
defaultValue: 'main',
|
||||
description: '',
|
||||
name: 'RELEASE_BRANCH',
|
||||
quickFilterEnabled: false,
|
||||
selectedValue: 'NONE',
|
||||
sortMode: 'NONE',
|
||||
tagFilter: '*',
|
||||
type: 'PT_BRANCH'
|
||||
)
|
||||
extendedChoice(
|
||||
name: "RELEASE_PROJECTS",
|
||||
type: "PT_RADIO",
|
||||
multiSelectDelimiter: " ",
|
||||
value: """api,msg_gateway,msg_transfer,push,rpc_conversation,rpc_group,rpc_msg,rpc_user""",
|
||||
defaultValue: "",
|
||||
description: "please choice projects to deploy"
|
||||
)
|
||||
}
|
||||
stages {
|
||||
stage('Git') {
|
||||
steps {
|
||||
checkout([$class: 'GitSCM',
|
||||
branches: [[name: "${params.RELEASE_BRANCH}"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [],
|
||||
gitTool: 'Default',
|
||||
submoduleCfg: [],
|
||||
userRemoteConfigs: [[url: "${GIT_URL}", credentialsId: "${CREDENTIALS_ID}"]]
|
||||
])
|
||||
}
|
||||
}
|
||||
stage('CommitHash') {
|
||||
steps {
|
||||
script {
|
||||
env.CommitHash = sh (script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Check Param') {
|
||||
steps {
|
||||
script {
|
||||
def releaseParams = "${params.RELEASE_PROJECTS}"
|
||||
def tag = "${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}"
|
||||
def selectEnv = "${params.SERVICE_ENV}"
|
||||
if(releaseParams) {
|
||||
echo "============================================="
|
||||
echo "projects: $releaseParams"
|
||||
echo "tag: $tag"
|
||||
echo "selectEnv: $selectEnv"
|
||||
echo "============================================="
|
||||
} else {
|
||||
echo "============================================="
|
||||
echo "invalid release projects!!! stop now!!!"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Docker Build') {
|
||||
steps {
|
||||
container ('docker') {
|
||||
withCredentials([usernamePassword(credentialsId: "${HARBOR_ID}", passwordVariable: 'password', usernameVariable: 'username')]) {
|
||||
sh """
|
||||
docker build -t ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} -f ${BASEDIR}/deploy/dockerfile/${params.RELEASE_PROJECTS}.Dockerfile .
|
||||
docker tag ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
|
||||
docker login -u ${username} -p ${password} ${HARBOR_URL}
|
||||
|
||||
docker push ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
docker rmi ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
docker rmi ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Deploy') {
|
||||
steps {
|
||||
container ('helm-kubectl') {
|
||||
sh """
|
||||
envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/default-configMap-test.yaml | kubectl apply -f -
|
||||
envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/default-namespace-test.yaml | kubectl apply -f -
|
||||
envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/msg_gateway.yaml | kubectl apply -f - && kubectl rollout status -f -
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
114
jenkins-deploy/jenkinsfiles/rpc.jenkinsfile
Normal file
114
jenkins-deploy/jenkinsfiles/rpc.jenkinsfile
Normal file
@ -0,0 +1,114 @@
|
||||
pipeline {
|
||||
agent {
|
||||
node {
|
||||
label 'jnlp-slave'
|
||||
}
|
||||
}
|
||||
environment {
|
||||
JOB_ENV = "social" // namespace
|
||||
DEPLOYMENT_NAME = "" // rpc server k8s deploy name, like user
|
||||
CONFIGMAP_NAME = "${DEPLOYMENT_NAME}-conf" // runtime conf
|
||||
JOB_NAME = "${JOB_NAME}" // jenkins job name
|
||||
GIT_URL = "" // gitlab or github codebase
|
||||
CREDENTIALS_ID = "" // need configure it in jenkins, will use it's username and password to pull codebase
|
||||
HARBOR_URL = "" // docker harbor url
|
||||
HARBOR_ID = "" // docker harbor id, will use it to login
|
||||
DOCKER_CPU = "100m"
|
||||
DOCKER_MEM = "200Mi"
|
||||
BASEDIR = "."
|
||||
BUILD_NUM = "${BUILD_NUMBER}"
|
||||
CONF_PATH = "/openim/config/"
|
||||
EXPOSED_PORT = "10110" // server port,will be container expose port
|
||||
}
|
||||
parameters {
|
||||
gitParameter(
|
||||
branch: '',
|
||||
branchFilter: 'origin/(.*)',
|
||||
defaultValue: 'main',
|
||||
description: '',
|
||||
name: 'RELEASE_BRANCH',
|
||||
quickFilterEnabled: false,
|
||||
selectedValue: 'NONE',
|
||||
sortMode: 'NONE',
|
||||
tagFilter: '*',
|
||||
type: 'PT_BRANCH'
|
||||
)
|
||||
extendedChoice(
|
||||
name: "RELEASE_PROJECTS",
|
||||
type: "PT_RADIO",
|
||||
multiSelectDelimiter: " ",
|
||||
value: """api,msg_gateway,msg_transfer,push,rpc_conversation,rpc_group,rpc_msg,rpc_user""",
|
||||
defaultValue: "",
|
||||
description: "please choice projects to deploy"
|
||||
)
|
||||
}
|
||||
stages {
|
||||
stage('Git') {
|
||||
steps {
|
||||
checkout([$class: 'GitSCM',
|
||||
branches: [[name: "${params.RELEASE_BRANCH}"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [],
|
||||
gitTool: 'Default',
|
||||
submoduleCfg: [],
|
||||
userRemoteConfigs: [[url: "${GIT_URL}", credentialsId: "${CREDENTIALS_ID}"]]
|
||||
])
|
||||
}
|
||||
}
|
||||
stage('CommitHash') {
|
||||
steps {
|
||||
script {
|
||||
env.CommitHash = sh (script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Check Param') {
|
||||
steps {
|
||||
script {
|
||||
def releaseParams = "${params.RELEASE_PROJECTS}"
|
||||
def tag = "${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}"
|
||||
def selectEnv = "${params.SERVICE_ENV}"
|
||||
if(releaseParams) {
|
||||
echo "============================================="
|
||||
echo "projects: $releaseParams"
|
||||
echo "tag: $tag"
|
||||
echo "selectEnv: $selectEnv"
|
||||
echo "============================================="
|
||||
} else {
|
||||
echo "============================================="
|
||||
echo "invalid release projects!!! stop now!!!"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Docker Build') {
|
||||
steps {
|
||||
container ('docker') {
|
||||
withCredentials([usernamePassword(credentialsId: "${HARBOR_ID}", passwordVariable: 'password', usernameVariable: 'username')]) {
|
||||
sh """
|
||||
docker build -t ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} -f ${BASEDIR}/deploy/dockerfile/${params.RELEASE_PROJECTS}.Dockerfile .
|
||||
docker tag ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM} ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
|
||||
docker login -u ${username} -p ${password} ${HARBOR_URL}
|
||||
|
||||
docker push ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
docker rmi ${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
docker rmi ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Deploy') {
|
||||
steps {
|
||||
container ('helm-kubectl') {
|
||||
sh """
|
||||
envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/default-configMap-test.yaml | kubectl apply -f -
|
||||
envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/default-namespace-test.yaml | kubectl apply -f -
|
||||
envsubst < ${BASEDIR}/deploy/k8sdeployment_dev/rpc_deployment.yaml | kubectl apply -f - && kubectl rollout status -f -
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
64
jenkins-deploy/k8sdeployment_dev/api.yaml
Normal file
64
jenkins-deploy/k8sdeployment_dev/api.yaml
Normal file
@ -0,0 +1,64 @@
|
||||
# api.yaml
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: api
|
||||
namespace: ${JOB_ENV}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
name: api
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: api
|
||||
spec:
|
||||
containers:
|
||||
- name: api
|
||||
image: ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
imagePullPolicy: Always
|
||||
resources:
|
||||
limits:
|
||||
memory: "500Mi"
|
||||
cpu: "80m"
|
||||
requests:
|
||||
memory: "200Mi"
|
||||
cpu: "50m"
|
||||
ports:
|
||||
- containerPort: 10002
|
||||
name: api
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: localtime
|
||||
mountPath: /etc/localtime
|
||||
- name: config
|
||||
mountPath: ${CONF_PATH}
|
||||
volumes:
|
||||
- name: localtime
|
||||
hostPath:
|
||||
path: /usr/share/zoneinfo/UTC
|
||||
- name: config
|
||||
configMap:
|
||||
name: ${CONFIGMAP_NAME}
|
||||
restartPolicy: Always
|
||||
|
||||
---
|
||||
# 外部访问的服务
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
labels:
|
||||
name: api
|
||||
name: api
|
||||
namespace: ${JOB_ENV}
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: api
|
||||
port: 10002
|
||||
targetPort: 10002
|
||||
nodePort: 30020
|
||||
selector:
|
||||
name: api
|
||||
592
jenkins-deploy/k8sdeployment_dev/default-configMap-test.yaml
Normal file
592
jenkins-deploy/k8sdeployment_dev/default-configMap-test.yaml
Normal file
@ -0,0 +1,592 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: ${CONFIGMAP_NAME}
|
||||
namespace: ${JOB_ENV}
|
||||
labels:
|
||||
app: ${CONFIGMAP_NAME}
|
||||
data:
|
||||
config.yaml: |
|
||||
################################################
|
||||
# 测试环境
|
||||
################################################
|
||||
zookeeper:
|
||||
schema: openim #不建议修改
|
||||
address: [ 127.0.0.1:30001 ] #
|
||||
username: #用户名
|
||||
password: #密码
|
||||
|
||||
mysql:
|
||||
address: [ 127.0.0.1:30006 ] #目前仅支持单机
|
||||
username: root #用户名
|
||||
password: openIM123 #密码
|
||||
database: openIM_v3 #不建议修改
|
||||
maxOpenConn: 1000 #最大连接数
|
||||
maxIdleConn: 100 #最大空闲连接数
|
||||
maxLifeTime: 60 #连接可以重复使用的最长时间(秒)
|
||||
logLevel: 4 #日志级别 1=slient 2=error 3=warn 4=info
|
||||
slowThreshold: 500 #慢语句阈值 (毫秒)
|
||||
|
||||
mongo:
|
||||
uri: #不为空则直接使用该值
|
||||
address: [ 127.0.0.1:30007 ] #单机时为mongo地址,使用分片集群时,为mongos地址
|
||||
database: openIM_v3 #mongo db 默认即可
|
||||
username: root #用户名
|
||||
password: openIM123 #密码
|
||||
maxPoolSize: 100
|
||||
|
||||
redis:
|
||||
address: [ 127.0.0.1:30029 ] #
|
||||
username: #only redis version 6.0+ need username
|
||||
password: #密码
|
||||
|
||||
kafka:
|
||||
username: #用户名
|
||||
password: #密码
|
||||
addr: [ 127.0.0.1:30032 ] #
|
||||
latestMsgToRedis:
|
||||
topic: "latestMsgToRedis" #不建议修改
|
||||
offlineMsgToMongo:
|
||||
topic: "offlineMsgToMongoMysql" #不建议修改
|
||||
msgToPush:
|
||||
topic: "msgToPush" #不建议修改
|
||||
consumerGroupID: #消费者组,不建议修改
|
||||
msgToRedis: redis #
|
||||
msgToMongo: mongo #
|
||||
msgToMySql: mysql #
|
||||
msgToPush: push #
|
||||
|
||||
|
||||
rpc:
|
||||
registerIP: #作为rpc启动时,注册到zookeeper的IP,api/gateway能访问到此ip和对应的rpcPort中的端口
|
||||
listenIP: #默认为0.0.0.0
|
||||
|
||||
|
||||
api:
|
||||
openImApiPort: [ 10002 ] #api服务端口
|
||||
listenIP: #默认为0.0.0.0
|
||||
|
||||
object:
|
||||
enable: "minio" #使用minio
|
||||
apiURL: "http://127.0.0.1:10002/object/"
|
||||
minio:
|
||||
bucket: "openim" #不建议修改
|
||||
endpoint: "http://127.0.0.1:10005" #minio对外服务的ip和端口,app要能访问此ip和端口
|
||||
accessKeyID: "root" #ID
|
||||
secretAccessKey: "openIM123" #秘钥
|
||||
sessionToken: "" #token
|
||||
cos: #tencent cos
|
||||
bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com"
|
||||
secretID: ""
|
||||
secretKey: ""
|
||||
sessionToken: ""
|
||||
oss: #ali oss
|
||||
endpoint: "https://oss-cn-chengdu.aliyuncs.com"
|
||||
bucket: "demo-9999999"
|
||||
bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com"
|
||||
accessKeyID: ""
|
||||
accessKeySecret: ""
|
||||
sessionToken: ""
|
||||
|
||||
rpcPort: #rpc服务端口,不建议修改,端口由脚本读取后传入程序,如启动多个程序,只需要填入多个端口,用逗号隔开,如 [10110, 10111]
|
||||
openImUserPort: [ 10110 ]
|
||||
openImFriendPort: [ 10120 ]
|
||||
openImMessagePort: [ 10130 ]
|
||||
openImMessageGatewayPort: [ 10140 ]
|
||||
openImGroupPort: [ 10150 ]
|
||||
openImAuthPort: [ 10160 ]
|
||||
openImPushPort: [ 10170 ]
|
||||
openImConversationPort: [ 10180 ]
|
||||
openImThirdPort: [ 10190 ]
|
||||
|
||||
rpcRegisterName: #rpc注册服务名,不建议修改
|
||||
openImUserName: User
|
||||
openImFriendName: Friend
|
||||
openImMsgName: Msg
|
||||
openImPushName: Push
|
||||
openImMessageGatewayName: MessageGateway
|
||||
openImGroupName: Group
|
||||
openImAuthName: Auth
|
||||
openImConversationName: Conversation
|
||||
openImThirdName: Third
|
||||
|
||||
log:
|
||||
storageLocation: ../../../../../logs/ #存放目录
|
||||
rotationTime: 24 #日志旋转时间
|
||||
remainRotationCount: 2 #日志数量
|
||||
remainLogLevel: 6 #日志级别 6表示全都打印,
|
||||
isStdout: false
|
||||
isJson: false
|
||||
withStack: false
|
||||
|
||||
longConnSvr:
|
||||
openImWsPort: [ 10001 ] #msg_gateway的websocket端口
|
||||
websocketMaxConnNum: 100000 #websocket最大连接数
|
||||
websocketMaxMsgLen: 4096 #websocket请求包最大长度
|
||||
websocketTimeout: 10 #websocket连接握手超时时间
|
||||
|
||||
push:
|
||||
enable: getui
|
||||
geTui: #个推离线推送
|
||||
pushUrl: "https://restapi.getui.com/v2/$appId"
|
||||
masterSecret: ""
|
||||
appKey: ""
|
||||
intent: ""
|
||||
channelID: ""
|
||||
channelName: ""
|
||||
fcm: #fcm离线推送
|
||||
serviceAccount: "x.json" #帐号文件,并放在 config目录下
|
||||
jpns: #极光推送 在极光后台申请后,修改以下四项
|
||||
appKey:
|
||||
masterSecret:
|
||||
pushUrl:
|
||||
pushIntent:
|
||||
|
||||
manager:
|
||||
userID: [ "openIM123456","openIM654321","openIMAdmin" ] #内置的app管理员userID
|
||||
nickname: [ "system1","system2", "system3" ] #内置的app管理员nickname
|
||||
|
||||
|
||||
|
||||
|
||||
multiLoginPolicy: 1 #多平台登录:Android、iOS、Windows、Mac、web 每种平台只能有一个在线
|
||||
|
||||
|
||||
chatPersistenceMysql: true #消息是否存入mysql,mysql中的消息仅用于管理后台使用
|
||||
msgCacheTimeout: 86400 #信消息缓存时间秒,不建议修改
|
||||
groupMessageHasReadReceiptEnable: true #群聊已读是否开启
|
||||
singleMessageHasReadReceiptEnable: true #单聊已读是否开启
|
||||
|
||||
retainChatRecords: 365 #mongo保存离线消息时间(天)
|
||||
chatRecordsClearTime: "0 2 * * 3" #每周三凌晨2点清理mongo中的过期(超过retainChatRecords时间)消息,这个删除是为了清理满足上个配置retainChatRecords的过期消息,不会发送通知,仅仅作为清理磁盘使用
|
||||
msgDestructTime: "0 2 * * *" #消息自动删除时间,每天凌晨2点删除过期消息,这个删除是为了删除保留时间超过超过会话字段msg_destruct_time(秒)的消息。
|
||||
|
||||
secret: tuoyun #秘钥,获取token时校验
|
||||
|
||||
tokenPolicy:
|
||||
expire: 90 #过期时间(天)
|
||||
|
||||
messageVerify:
|
||||
friendVerify: false #发送消息时是否验证好友关系
|
||||
|
||||
#ios系统推送声音以及标记计数
|
||||
iosPush:
|
||||
pushSound: "xxx"
|
||||
badgeCount: true
|
||||
production: false
|
||||
|
||||
callback:
|
||||
# 回调callback
|
||||
url:
|
||||
beforeSendSingleMsg:
|
||||
enable: false #是否启用此回调事件
|
||||
timeout: 5 #超时时间(秒)
|
||||
failedContinue: true #如回调失败是否继续往后执行
|
||||
afterSendSingleMsg:
|
||||
enable: false
|
||||
timeout: 5
|
||||
beforeSendGroupMsg:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
afterSendGroupMsg:
|
||||
enable: false
|
||||
timeout: 5
|
||||
msgModify:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
userOnline:
|
||||
enable: false
|
||||
timeout: 5
|
||||
userOffline:
|
||||
enable: false
|
||||
timeout: 5
|
||||
userKickOff:
|
||||
enable: false
|
||||
timeout: 5
|
||||
offlinePush:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
onlinePush:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
superGroupOnlinePush:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
beforeAddFriend:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
beforeCreateGroup:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
beforeMemberJoinGroup:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
beforeSetGroupMemberInfo:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
setMessageReactionExtensions:
|
||||
enable: false
|
||||
timeout: 5
|
||||
failedContinue: true
|
||||
|
||||
|
||||
prometheus: #prometheus每个服务的端口数量需要和rpcPort保持对应
|
||||
enable: false
|
||||
userPrometheusPort: [ 20110 ]
|
||||
friendPrometheusPort: [ 20120 ]
|
||||
messagePrometheusPort: [ 20130 ]
|
||||
messageGatewayPrometheusPort: [ 20140 ]
|
||||
groupPrometheusPort: [ 20150 ]
|
||||
authPrometheusPort: [ 20160 ]
|
||||
pushPrometheusPort: [ 20170 ]
|
||||
conversationPrometheusPort: [ 20230 ]
|
||||
rtcPrometheusPort: [ 21300 ]
|
||||
thirdPrometheusPort: [ 21301 ]
|
||||
messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] #端口数量需要和script/path_info.sh中的msg_transfer_service_num保持一致
|
||||
notification.yaml: |
|
||||
# Copyright © 2023 OpenIM. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
groupCreated:
|
||||
isSendMsg: true #是否发送消息,false不发消息为无声的触发同步。true发消息需要触发会话,rpc notification直接发两次,一次消息一次通知, options字段isNotification是否为通知
|
||||
reliabilityLevel: 1 # 1为online才发送 2为必达
|
||||
unreadCount: false # 只在isSendMsg为true的情况下有作用
|
||||
offlinePush:
|
||||
enable: false # 开启该开关
|
||||
title: "create group title" # xx create the group
|
||||
desc: "create group desc"
|
||||
ext: "create group ext"
|
||||
|
||||
# 不加消息contentType,content统一json 结构体使用pb的
|
||||
|
||||
|
||||
groupInfoSet:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupInfoSet title"
|
||||
desc: "groupInfoSet desc"
|
||||
ext: "groupInfoSet ext"
|
||||
|
||||
|
||||
joinGroupApplication:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "joinGroupApplication title"
|
||||
desc: "joinGroupApplication desc"
|
||||
ext: "joinGroupApplication ext"
|
||||
|
||||
memberQuit:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "memberQuit title"
|
||||
desc: "memberQuit desc"
|
||||
ext: "memberQuit ext"
|
||||
|
||||
groupApplicationAccepted:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupApplicationAccepted title"
|
||||
desc: "groupApplicationAccepted desc"
|
||||
ext: "groupApplicationAccepted ext"
|
||||
|
||||
groupApplicationRejected:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: " title"
|
||||
desc: " desc"
|
||||
ext: " ext"
|
||||
|
||||
|
||||
groupOwnerTransferred:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupOwnerTransferred title"
|
||||
desc: "groupOwnerTransferred desc"
|
||||
ext: "groupOwnerTransferred ext"
|
||||
|
||||
memberKicked:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "memberKicked title"
|
||||
desc: "memberKicked desc"
|
||||
ext: "memberKicked ext"
|
||||
|
||||
memberInvited:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "memberInvited title"
|
||||
desc: "memberInvited desc"
|
||||
ext: "memberInvited ext"
|
||||
|
||||
memberEnter:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "memberEnter title"
|
||||
desc: "memberEnter desc"
|
||||
ext: "memberEnter ext"
|
||||
|
||||
groupDismissed:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupDismissed title"
|
||||
desc: "groupDismissed desc"
|
||||
ext: "groupDismissed ext"
|
||||
|
||||
groupMuted:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupMuted title"
|
||||
desc: "groupMuted desc"
|
||||
ext: "groupMuted ext"
|
||||
|
||||
groupCancelMuted:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupCancelMuted title"
|
||||
desc: "groupCancelMuted desc"
|
||||
ext: "groupCancelMuted ext"
|
||||
defaultTips:
|
||||
tips: "group Cancel Muted"
|
||||
|
||||
|
||||
groupMemberMuted:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupMemberMuted title"
|
||||
desc: "groupMemberMuted desc"
|
||||
ext: "groupMemberMuted ext"
|
||||
|
||||
groupMemberCancelMuted:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupMemberCancelMuted title"
|
||||
desc: "groupMemberCancelMuted desc"
|
||||
ext: "groupMemberCancelMuted ext"
|
||||
|
||||
groupMemberInfoSet:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupMemberInfoSet title"
|
||||
desc: "groupMemberInfoSet desc"
|
||||
ext: "groupMemberInfoSet ext"
|
||||
|
||||
groupInfoSetAnnouncement:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupInfoSetAnnouncement title"
|
||||
desc: "groupInfoSetAnnouncement desc"
|
||||
ext: "groupInfoSetAnnouncement ext"
|
||||
|
||||
|
||||
groupInfoSetName:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "groupInfoSetName title"
|
||||
desc: "groupInfoSetName desc"
|
||||
ext: "groupInfoSetName ext"
|
||||
|
||||
|
||||
#############################friend#################################
|
||||
friendApplicationAdded:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "Somebody applies to add you as a friend"
|
||||
desc: "Somebody applies to add you as a friend"
|
||||
ext: "Somebody applies to add you as a friend"
|
||||
|
||||
friendApplicationApproved:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "Someone applies to add your friend application"
|
||||
desc: "Someone applies to add your friend application"
|
||||
ext: "Someone applies to add your friend application"
|
||||
|
||||
friendApplicationRejected:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "Someone rejected your friend application"
|
||||
desc: "Someone rejected your friend application"
|
||||
ext: "Someone rejected your friend application"
|
||||
|
||||
friendAdded:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "We have become friends"
|
||||
desc: "We have become friends"
|
||||
ext: "We have become friends"
|
||||
|
||||
friendDeleted:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "deleted a friend"
|
||||
desc: "deleted a friend"
|
||||
ext: "deleted a friend"
|
||||
|
||||
friendRemarkSet:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "Your friend's profile has been changed"
|
||||
desc: "Your friend's profile has been changed"
|
||||
ext: "Your friend's profile has been changed"
|
||||
|
||||
blackAdded:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "blocked a user"
|
||||
desc: "blocked a user"
|
||||
ext: "blocked a user"
|
||||
|
||||
blackDeleted:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "Remove a blocked user"
|
||||
desc: "Remove a blocked user"
|
||||
ext: "Remove a blocked user"
|
||||
|
||||
friendInfoUpdated:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "friend info updated"
|
||||
desc: "friend info updated"
|
||||
ext: "friend info updated"
|
||||
|
||||
#####################user#########################
|
||||
userInfoUpdated:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "Remove a blocked user"
|
||||
desc: "Remove a blocked user"
|
||||
ext: "Remove a blocked user"
|
||||
|
||||
#####################conversation#########################
|
||||
conversationChanged:
|
||||
isSendMsg: false
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "conversation changed"
|
||||
desc: "conversation changed"
|
||||
ext: "conversation changed"
|
||||
|
||||
conversationSetPrivate:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: true
|
||||
title: "burn after reading"
|
||||
desc: "burn after reading"
|
||||
ext: "burn after reading"
|
||||
|
||||
#####################msg#########################
|
||||
msgQuoteMember:
|
||||
isSendMsg: true
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
enable: false
|
||||
title: "your msg has been quote"
|
||||
desc: "your msg has been quote"
|
||||
ext: "your msg has been quote"
|
||||
@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: ${JOB_ENV}
|
||||
66
jenkins-deploy/k8sdeployment_dev/msg_gateway.yaml
Normal file
66
jenkins-deploy/k8sdeployment_dev/msg_gateway.yaml
Normal file
@ -0,0 +1,66 @@
|
||||
# msg-gateway.yaml
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: msg-gateway
|
||||
namespace: ${JOB_ENV}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
name: msg-gateway
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: msg-gateway
|
||||
spec:
|
||||
containers:
|
||||
- name: msg-gateway
|
||||
image: ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
imagePullPolicy: Always
|
||||
resources:
|
||||
limits:
|
||||
memory: "1024Mi"
|
||||
cpu: "200m"
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
cpu: "50m"
|
||||
ports:
|
||||
- containerPort: 10001
|
||||
name: ws
|
||||
protocol: TCP
|
||||
- containerPort: 10140
|
||||
name: rpc
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: localtime
|
||||
mountPath: /etc/localtime
|
||||
- name: config
|
||||
mountPath: ${CONF_PATH}
|
||||
volumes:
|
||||
- name: localtime
|
||||
hostPath:
|
||||
path: /usr/share/zoneinfo/UTC
|
||||
- name: config
|
||||
configMap:
|
||||
name: ${CONFIGMAP_NAME}
|
||||
restartPolicy: Always
|
||||
---
|
||||
# 外部访问的服务
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
labels:
|
||||
name: msg-gateway
|
||||
name: msg-gateway
|
||||
namespace: ${JOB_ENV}
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: msg-gateway-ws
|
||||
port: 10001
|
||||
targetPort: 10001
|
||||
nodePort: 30031
|
||||
selector:
|
||||
name: msg-gateway
|
||||
59
jenkins-deploy/k8sdeployment_dev/rpc_deployment.yaml
Normal file
59
jenkins-deploy/k8sdeployment_dev/rpc_deployment.yaml
Normal file
@ -0,0 +1,59 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: ${DEPLOYMENT_NAME}
|
||||
namespace: ${JOB_ENV}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
name: ${DEPLOYMENT_NAME}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: ${DEPLOYMENT_NAME}
|
||||
spec:
|
||||
containers:
|
||||
- name: ${DEPLOYMENT_NAME}
|
||||
image: ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
imagePullPolicy: Always
|
||||
resources:
|
||||
limits:
|
||||
memory: ${DOCKER_MEM}
|
||||
cpu: ${DOCKER_CPU}
|
||||
requests:
|
||||
memory: 100Mi
|
||||
cpu: 80m
|
||||
ports:
|
||||
- containerPort: ${EXPOSED_PORT}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
tcpSocket:
|
||||
port: ${EXPOSED_PORT}
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 5
|
||||
successThreshold: 1
|
||||
failureThreshold: 5
|
||||
periodSeconds: 300
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: ${EXPOSED_PORT}
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 5
|
||||
successThreshold: 1
|
||||
failureThreshold: 5
|
||||
periodSeconds: 60
|
||||
volumeMounts:
|
||||
- name: localtime
|
||||
mountPath: /etc/localtime
|
||||
- name: config
|
||||
mountPath: ${CONF_PATH}
|
||||
volumes:
|
||||
- name: localtime
|
||||
hostPath:
|
||||
path: /usr/share/zoneinfo/UTC
|
||||
- name: config
|
||||
configMap:
|
||||
name: ${CONFIGMAP_NAME}
|
||||
restartPolicy: Always
|
||||
41
jenkins-deploy/k8sdeployment_dev/transfer.yaml
Normal file
41
jenkins-deploy/k8sdeployment_dev/transfer.yaml
Normal file
@ -0,0 +1,41 @@
|
||||
# transfer don't need port, please handle it separately
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: ${DEPLOYMENT_NAME}
|
||||
namespace: ${JOB_ENV}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
name: ${DEPLOYMENT_NAME}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: ${DEPLOYMENT_NAME}
|
||||
spec:
|
||||
containers:
|
||||
- name: ${DEPLOYMENT_NAME}
|
||||
image: ${HARBOR_URL}/${JOB_ENV}/${JOB_NAME}:${CommitHash}-${BUILD_NUM}
|
||||
imagePullPolicy: Always
|
||||
resources:
|
||||
limits:
|
||||
memory: ${DOCKER_MEM}
|
||||
cpu: ${DOCKER_CPU}
|
||||
requests:
|
||||
memory: 100Mi
|
||||
cpu: 80m
|
||||
volumeMounts:
|
||||
- name: localtime
|
||||
mountPath: /etc/localtime
|
||||
- name: config
|
||||
mountPath: ${CONF_PATH}
|
||||
volumes:
|
||||
- name: localtime
|
||||
hostPath:
|
||||
path: /usr/share/zoneinfo/UTC
|
||||
- name: config
|
||||
configMap:
|
||||
name: ${CONFIGMAP_NAME}
|
||||
restartPolicy: Always
|
||||
Loading…
x
Reference in New Issue
Block a user