查看原文
其他

推荐一款代码搜索系统,为 Gitee/GitLab/Gitea 提供代码搜索服务!

猿哥 GitHub猿 2023-09-18

推荐关注

责编:猿哥 | 来源:GitHub猿 整理

往期文章:推荐一款适用于搭建内部培训平台的开源系统,可免费用于商用!


正文

大家好。我是GitHub猿。
今天,推荐一个系统项目。猿哥第一次使用就有点上头,爱不释手,必须要推荐给大家。

上次是谁要的系统项目啊,猿哥帮你找到了。

这是我目前见过最好的系统项目。功能完整,代码结构清晰。值得推荐。

📚 项目介绍

最近猿哥在逛网站的时候发现一个不错的开源项目,猿哥觉得不错,值得拿出来和大家分享下。

🔥本项目系统是一款开源的代码搜索工具,目标是为包括 Gitee/GitLab/Gitea 在内的代码托管系统提供 自动的源码、仓库和 Issue 的搜索服务。扩展:ChatGPT太TM牛逼了!

搜索界面效果

架构

服务包含两个模块,分别是 gateway 和 indexer(默认配置下 indexer 被集成到 gateway 中)。其中 gateway 用来接受来自 HTTP 的索引任务, 对任务进行检查后存放到队列中;同时 gateway 还接受搜索的请求,并返回搜索结果给客户端。而 indexer 进程负责监控队列中的索引任务, 并将这些要新增、删除和修改索引的任务更新到索引库中。

模块说明

  • core 核心对象和公共类

  • gateway 用来接收来自 HTTP 的索引和搜索的请求

  • indexer 构建、更新和删除索引的服务

数据流图

源码安装

1.依赖

  • openjdk >= 8

  • maven > 3

2.下载代码

$ git clone 文末获取
$ cd kooder

运行前准备工作

配置文件: kooder.properties

  1. 配置 HTTP 服务

http.url Kooder 的网址,该地址用于向 Git 服务注入 Webhook 的链接地址, 必须是 Git 服务可访问的地址,例如:http.url = http://<kooder-host>:8080

http.port Kooder 运行的 HTTP 端口

  1. 配置 GitLab 服务地址

目前 Kooder 支持 Gitee、GitLab 和 Gitea ,其他服务正在开发中。

gitlab.url 访问 GitLab 的首页
gitlab.personal_access_token Gitlab 管理员账号 root 的 Personal Access Token。另外,搜索公众号Linux就该这样学后台回复“电子书”,获取一份惊喜礼包。

更多配置项请看 configuration.md

  1. 构建并运行

$ cd Kooder
$ mvn install
### 给执行脚本添加权限
$ chmod +x bin/*.sh
### 启动 gateway
$ bin/gateway.sh
### 浏览器访问 http://localhost:8080

Kooder Search API

@see API.md

Docker 安装

docker-compose

依赖

  • docker-ce环境

  • docker-compose

开发代码优化后,部署只需将代码 clone 下来,然后在服务器上部署容器平台,在平台上执行如下命令:

### 开箱即用
docker-compose up -d

### 关闭容器
docker-compose down

docker-compose ha 版

依赖

  • docker-ce环境

  • docker-compose

开发代码优化后,部署只需将代码clone下来,然后在服务器上部署容器平台,在平台上执行如下命令:

### 开箱即用
docker-compose -f docker-compose-ha.yaml up -d

### 关闭容器
docker-compose -f docker-compose-ha.yaml down

实现的效果如下:

配置文件: core/src/main/resources/kooder.properties,修改配置文件之后,执行如下命令:

docker-compose down
docker-compose up -d

查看服务启动状态

docker logs -f CONTAINER_ID
......
2021-04-07 13:28:49 INFO [gateway] - Tasks [indexer,gitee] started.
2021-04-07 13:28:49 INFO [gateway] - READY (*:8080)!
.......

以上信息显示的日志表明启动成功

注意

每次启动都会执行mvn install以确保配置文件生效

对接不同平台

对接 GitLab

需配置如下几项:

http.startup.tasks = indexer,gitlab
gitlab.url = http://gitlab-host:gitlab-port/
gitlab.personal_access_token = <root user personal access token>
git.username = root
git.password =

如果不填写密码,则 Kooder 会自动使用 access token 作为密码。

牛逼啊!接私活必备的 N 个开源项目!赶快收藏

对接 Gitee 私有化

需配置如下几项:

http.startup.tasks = indexer,gitee
gitee.url = https://<gitee-host>/
gitee.personal_access_token = <root user personal access token>
git.username = root
git.password =

对接 Gitea

1.进入 Gitea 管理后台;

2.添加 Gitea Web 钩子;

3.设置 Web 钩子。

Url 填写 http://kooder-ip:kooder-port/gitea,请求方式为POST + application/json,触发条件可选所有事件或者自定义事件

如选择自定义事件,则需要勾选仓库事件的推送仓库选项,和工单事件的工单选项。

2.配置如下几项

http.startup.tasks = indexer,gitea
gitea.secret_token = <webhook secret token>
gitea.url = http://gitea-ip:prot/
gitea.personal_access_token = <admin personal access token>
git.username = <admin username>
git.password = <admin password>

从文件索引仓库

Kooder 目前支持同一托管平台的仓库索引,如需索引多个托管平台,进行分次导入即可。

在 kooder.properties 配置文件中进行如下设置:

//开启 Kooder 从文件索引仓库的特性

http.startup.tasks = indexer,file //增加 file 字段

file.index.path = C:/Documents/Kooder/file.txt //配置 file.index.path 文件路径(file.txt 为本地文件,路径可自行配置)

file.index.vender = gitee //指定对应的代码托管平台(必须)

file.txt 内容

//添加配置中指定的托管平台仓库地址
https://gitee.com/koode/kooder.git
https://gitee.com/ld/J2Cache.git
...

构建并运行

$ cd Kooder
$ mvn install
### 启动 gateway
$ bin/gateway.sh
### 浏览器访问 http://localhost:8080

搜索界面效果


最后,想学习这个项目的可以查看项目地址:

项目源码,怎么领取?

源码获取

牛逼啊!接私活必备的 N 个开源项目!赶快收藏

扫码下方二维码,后台回复【搜索系统】即可获取所有系统

欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

在 GitHub猿 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!

--END--


猿哥个人微信


添加猿哥个人微信即送一份惊喜大礼包


→ 技术资料共享

→ 技术交流社群



版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

往日文章:
牛逼啊!接私活必备的 N 个开源项目!赶快收藏吧(附源码合集第八期)!
推荐一套开源通用后台管理系统(附源码)
免费开源内容管理系统,免授权,永久商用,企业建站系统!
看看人家那物联网系统,那叫一个优雅!
ChatGPT当中的“GPT”是什么意思?
致力于打造成一款全栈式测试平台,为研发赋能,让测试更简单!
ChatGPT+XMind,炸裂了!
OA办公系统开源免费,企业数字化、信息化办公优秀解决方案!
优雅的表单设计器,通过拖拽快速构建表单!
ChatGPT太TM牛逼了!

一套跨端、跨框架的企业级 UI 组件库,追求极致体验开箱即用!

最近,GitHub猿建了一个「GitHub猿交流群」,欢迎大家一起交流优秀开源项目,也可以宣传自己的开源项目,在 「GitHub猿」公众号后台回复【加群】邀请你入群。

你点的每个赞,我都认真当成了喜欢

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存