withchao 08c7461ade Merge remote-tracking branch 'origin/main' into pre-release-v3.8.4
# Conflicts:
#	.env
#	.github/workflows/docker-build-and-release-services-images.yml
#	.github/workflows/merge-from-milestone.yml
#	.github/workflows/update-version-file-on-release.yml
#	README.md
#	README_zh_CN.md
#	cmd/main.go
#	config/discovery.yml
#	config/notification.yml
#	config/openim-api.yml
#	config/openim-msggateway.yml
#	config/openim-msgtransfer.yml
#	config/openim-push.yml
#	config/openim-rpc-auth.yml
#	config/openim-rpc-conversation.yml
#	config/openim-rpc-friend.yml
#	config/openim-rpc-group.yml
#	config/openim-rpc-msg.yml
#	config/openim-rpc-third.yml
#	config/openim-rpc-user.yml
#	config/share.yml
#	config/webhooks.yml
#	deployments/templates/config.yaml
#	docker-compose.yml
#	go.mod
#	go.sum
#	internal/api/init.go
#	internal/api/jssdk/tools.go
#	internal/api/msg.go
#	internal/api/prometheus_discovery.go
#	internal/api/router.go
#	internal/msggateway/init.go
#	internal/msggateway/ws_server.go
#	internal/msgtransfer/init.go
#	internal/msgtransfer/online_history_msg_handler.go
#	internal/msgtransfer/online_msg_to_mongo_handler.go
#	internal/push/push.go
#	internal/rpc/auth/auth.go
#	internal/rpc/conversation/conversation.go
#	internal/rpc/group/group.go
#	internal/rpc/msg/callback.go
#	internal/rpc/msg/server.go
#	internal/rpc/relation/friend.go
#	internal/rpc/relation/notification.go
#	internal/rpc/third/third.go
#	internal/rpc/user/user.go
#	internal/tools/cron/cron_task.go
#	magefile.go
#	pkg/common/cmd/api.go
#	pkg/common/cmd/msg_transfer.go
#	pkg/common/config/config.go
#	pkg/common/discovery/discoveryregister.go
#	pkg/common/prommetrics/prommetrics.go
#	pkg/common/startrpc/start.go
#	pkg/common/storage/database/mgo/cache.go
#	pkg/common/storage/database/mgo/msg_test.go
#	pkg/rpcli/auth.go
#	pkg/rpcli/tool.go
#	pkg/rpcli/user.go
#	test/stress-test-v2/main.go
#	test/stress-test/main.go
#	tools/seq/internal/seq.go
#	version/version
2025-07-29 17:29:08 +08:00
..
2025-05-15 14:23:27 +08:00

Notes about go workspace

As openim is using go1.18's workspace feature, once you add a new module, you need to run go work use -r . at root directory to update the workspace synced.

Create a new extensions

  1. Create your tools_name directory in pkg /tools first and cd into it.
  2. Init the project.
  3. Then go work use -r . at current directory to update the workspace.
  4. Create your tools

You can execute the following commands to do things above:

# edit the CRD_NAME and CRD_GROUP to your own
export OPENIM_TOOLS_NAME=<Changeme>

# copy and paste to create a new CRD and Controller
mkdir tools/${OPENIM_TOOLS_NAME}
cd tools/${OPENIM_TOOLS_NAME}
go mod init github.com/openimsdk/open-im-server/tools/${OPENIM_TOOLS_NAME}
go mod tidy
go work use -r .
cd ../..