我用jOOQ设置了一个Java项目。目前,我们即将在 Jenkins 上创建一个 CI 管道。
理想情况下,我们不希望在存储库中提交生成的代码,而是在构建过程中生成它。但是,jOOQ 需要连接到数据库才能生成代码。
第一种方法是允许 Jenkins 连接到数据库。如果我们被禁止从 Jenkins 访问数据库,我们应该考虑哪些方法?
欢迎任何评论或提示,非常感谢。
为什么不将生成的代码提交到存储库?
正如您所注意到的,每种方法都有优点和缺点,但一般来说,提交生成的代码有更多的优点。 查看该代码就像任何其他具有自己的发布周期和版本控制的库一样。您可能有这样的库,您可以称它们为 libraryAbc-1.3.17.jar并且您将该 jar 文件提交到存储库没有任何问题,对吗?特别是,当它是第三方依赖项时。
这是一篇有趣的文章,用更多详细信息说明了上述内容:
- https://blog.jooq.org/2014/09/08/look-no-further-the-final-answer-to-where-to-put-generated-code
以及最近关于jOOQ用户组的讨论:
- https://groups.google.com/d/msg/jooq-user/M3PKEhrXnZ8/0PyFVMfQAgAJ
在没有数据库连接的情况下重新生成代码的选项
请注意该讨论如何引用从非数据库的元模型重新生成代码的选项,例如:
XMLDatabase
JPADatabase
DDLDatabase
所有这些方法都具有从文件系统中获取元模型的优势,其价格是它们不支持直接连接到数据库时将支持的所有特定于供应商的功能。
但是,为什么不将测试容器与您的实际数据库产品一起使用呢?可以在此处看到一个示例。