背景
之前贵司做了一个 OSS Insight ,是一个针对开源软件项目的可视化和分析平台。它提供了对开源项目的全面分析和可视化展示,帮助用户了解项目的活跃度、贡献者、代码质量、依赖关系等信息。
后来又推出了个人的 lite 版,ossinsight-lite ,有点酷炫,而且里面教了大家如何白嫖 tidbcloud 来搭建自己的 ossinsght。这里我就做个搬运工,顺便记录一下踩坑过程。
准备工作
需要有一下三个服务的账户:
- Github 账户:用于fork并运行您自己的数据流水线,以获取您在GitHub上的活动记录;
- TiDB Serverless 账户:免费的云数据库,用于免费存储个人数据;
- Vercel 账户:用于部署前端看板
创建云数据库
Reference: https://github.com/pingcap/ossinsight-lite/blob/main/docs/setup/database.md
创建 Serverless 集群
进入 tidbcloud,创建一个 Serverless 集群(富哥想创建付费集群当我没说)
等待几分钟,创建完成后大概长这样:
记录登录信息
点击右上角 Connect
按钮,找到云数据库的端点、端口、用户名、密码等信息,这是 root
用户的信息,之后如果按照官方文档操作应该使用这个账户就可以了。
但是如果你想创建一个独立的非 root
用户,请往下看。
创建用户注意事项
如果你不想想官方文档一样使用 root 用户登录,而是创建一个专属的数据库用户的话,需要注意以下事项:
用户名前缀固定
TiDBCloud Serverless 共享存储卷,不通租户用户名前缀实现空间隔离,因此我们不能完全自定义用户名,需要有特定的用户名前缀。
https://docs.pingcap.com/tidbcloud/select-cluster-tier#user-name-prefix
比如我的 root 用户名为44Kz3Lonut9UUp2.root
(随便举例,非真实用户),我想创建一个 xiabee
用户,就应该创建为 44Kz3Lonut9UUp2.xiabee
1 | create user '44Kz3Lonut9UUp2.xiabee'@'%' identified by 'password'; |
用户创建成功
密码设置
如果你的 GitHub Action
中遇到以下报错:
1 | /usr/local/lib/ruby/3.2.0/uri/rfc2396_parser.rb:176:in `split': bad URI(is not URI?): mysql2://xxxxxxxxxxxx.xiabee.github:###############@gateway01.ap-southeast-1.prod.aws.tidbcloud.com:4000/github_repos (URI::InvalidURIError) |
那很可能是因为 TiDB 用户的密码中包含了特殊字符,如果遇到这种情况应该在 SECRET
填入密码时使用 url
编码;或者设置一个不包含特殊字符的密码。
详细内容参考这篇 issue
用户授权
最终在 Github Action
里面要创建两个库,一个是 github_personal
,一个是 github_repos
,我们登录的用户需要有这两个库的写权限。
1 | GRANT ALL ON github_personal.* TO '44Kz3Lonut9UUp2.xiabee'@'%'; |
接下来应该可以顺利运行 Github Action
了
设置 Github Action
Reference: https://github.com/pingcap/ossinsight-lite/blob/main/docs/setup/repo-and-action.md
设置 Action 分为三步:
Fork 仓库
设置 Action Secrets
Settings :arrow_right: Secrets and variables :arrow_right: Action
设置一个名为 DATABASE_URL
的环境变量,其值为
1 | mysql://<user>:<password>@<host>:<port> |
点击展开示例
如果你的 TiDB 连接凭证信息如下:host: 'gateway01.us-west-2.prod.aws.tidbcloud.com', port: 4000, user: '4Budszs5sxiUZ65.root', password: 'Us1h2MRraVB4zfpU', ssl_ca: /etc/ssl/cert.pem那么 DATABASE_URL 的值应该设置为
mysql://4Budszs5sxiUZ65.root:Us1h2MRraVB4zfpU@gateway01.us-west-2.prod.aws.tidbcloud.com:4000
开启 workflow
允许 workflow 运行
第一次开启时需要手动运行
问题处理
部署 Vecel
通过 Vecel 部署我们的前端 dashboard
导入项目
进入 Vecel 控制台,创建项目
部署刚刚 Fork 的那个仓库:ossinsight-lite
直接 Deploy,项目会在几秒内失败,因为我们还没有配置凭证信息。但是没有关系,继续往后走
创建 TiDBCloud 集成
进入 TiDBCloud 集成主页,选择项目之后一路 continue 即可
集成后如下:
重新部署 Vecel
等待几分钟,待其运行完毕。
设置自定义域名
最终效果
- 完整效果如 背景 所示
- 当然也可以直接引用进 markdown 里面