TiDB 的官方镜像的编译Dockerfile在哪里

想要开发plugin,但是使用官方tidb镜像就会报错:error=“plugin.Open("/plugins/audit-1"): plugin was built with a different version of package github.com/pingcap/tidb/parser/format
5.4和6.5都有这个问题
当前经过我的观察(我试了一下自己编译tidb镜像),主要原因应该是:编译plugin用到的 ./parser 的绝对路径要和 编译的tidb镜像 的 ./parser 的绝对路径 相同
所以问题变成了:官方tidb镜像编译时的代码路径是什么呢? 我试了 /tidb, /ws/tidb, /go/src/github.com/pingcap/tidb, 都不行,有大佬了解这方面吗?
Ref: TiDB 的Arm版的镜像的Dockerfile在哪里?

1 个赞

好像是这个,我对这个不熟,不是非常确定。

感谢大佬回答~
这个我找到过,按artifacts来说就是 /ws ,但是不是这个
我当前的进展是,假如加载错误,报错信息里面会打印绝对路径(带jenkins的一长串,好像是那个)

1 个赞

tidb报错的时候显示 /home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/parser/terror/terror.go:292
所以应该是 /home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb 这个目录下面,但是我并没有找到相关的资料=。=

自己重新编译tidb和插件。

这个确实是可以解决,但是还是想用官方镜像……

关联贴已经解决了。

这个帖子我有看见,感觉对不上,https://github.com/PingCAP-QE/ci/blob/main/jenkins/Dockerfile/release/linux-arm64/tidb 没有具体的编译环境

我帮你问问

tidb-server 和 plugin 一定要在一个相同环境设置下编译。

1 个赞

可使用这个dockerfile 适当修改编译步骤进行编译 tidb-server 和 自己开发的 plugin。

注意编译时通过 GOLANG_VERSION 这个 build args 控制编译环境的 golang 版本匹配 tidb 代码编译需要的版本。
比如 v6.5 系列使用 golang 1.19.x 版本。

1 个赞

这个是比较陈旧的内容, 而且仅仅是组装镜像,不涉及二进制内容的编译,目前演进后不再使用了。你如果编译 release-6.x 分支开发编译可基于我在话题中的另一个回复来实践。

1 个赞

这样……所以tidb-server是需要自己编译一份的吗?
我当前试了下,6.5.x 是可以适配官方版 tidb-server的,但是7.5.x 就不行,会报错 plugin was built with a different version of package go.uber.org/atomic