我当前项目的一名承包商有一个怪异的习惯,即以罐子的形式将修复程序部署到生产环境中,而不是将固定代码推送到项目的git repo中。有几十个打包到罐子中的Maven项目
是否有任何实际的方法可以检测和绘制生产环境中的已编译jar和仓库中的代码之间的所有差异?目前,我可以使用IDEA反编译jar,并将结果与代码进行比较。反编译后的代码在设计上与原始代码不相同,因此会花费很多时间,并可能导致错误。
答案 0 :(得分:1)
您的问题的技术解决方案称为Reproducible_builds。
但是我不认为您需要针对“责怪游戏”的技术解决方案,而是需要一种组织解决方案,例如使用您自己的jar编译覆盖生产版本,并在问题再次出现时拒绝向承包商付款
答案 1 :(得分:1)
要检测更改的类,我将编译代码库中的代码,并在您刚刚创建的类文件和生产中的类文件之间逐个类比较二进制类。这可以很容易地实现自动化。
但是真正的解决方案当然是:您的公司应该有一条规则,那就是只能从正式git repo提取的构建服务器(Jenkins,Bamboo等)进行构建。没有例外。