我觉得我有点进退两难,我强烈反对老板的解决方案,但我不想在没有充分理由的情况下争论。我正在寻找双方的意见来帮助我改变我对此的感觉,我愿意改变我的想法。
我的老板坚持缓存我们构建的驱动程序并在源代码存储库本身中签名。也就是说,存储库中的一个文件夹包含来自最新版本的签名驱动程序。
更新这些文件将是构建后的手动步骤,必须有人将它们提交回存储库。
这些驱动程序不会经常更改,并且签名过程很漫长,这就是我们想要缓存它们的原因 - 但我觉得将它们缓存在源代码存储库中是一个错误。
注意,我们的构建有多层缓存——首先它将检查存储库中是否存在相同版本的驱动程序并使用它。接下来,它将检查以前的构建是否已经运行,如果构建的驱动程序未更改,则在输出目录中重用签名的驱动程序。
一方面,如果有人忘记使用新驱动程序更新存储库,则会导致至少一个签名进程运行,直到更新本地输出目录,然后该目录将用作未来构建的缓存。
另一方面,如果我们不在存储库中缓存签名的驱动程序,那么即使驱动程序最近没有更改,重新检出存储库也总是会引发签名。
我知道存储二进制文件的副本会增加存储库的大小和执行某些操作的时间,但围绕这一点的观点是这没什么大不了的。
这种做法的可接受程度如何?大家的意见如何?
缓存方式是错误的。利用已发布的包/版本(无论您在何处托管 git 存储库)。利用分支并设置 CI/CD 管道,如果合并到特定分支上,该管道将自动签名并使用签名的驱动程序创建新版本。这样,您就不会签署正在开发但位于指定版本的驱动程序(由所需分支上的 MR/PL 触发,最常见的是主/主分支)。希望这个方法有帮助。