有什么方法可以缓存签名的二进制文件并在Azure Build Pipeline运行期间将其提取?

问题描述

我们有一个Azure构建管道正在构建我们的产品。我们最近迁移到了自定义代理程序池,因此现在可以控制该池中的VM。我最近添加代码签名步骤。此步骤将对所有二进制文件进行签名,并导致构建时间加倍。到现在为止,我还没有考虑过缓存,因为我们的整个构建过程大约只有20分钟。现在我们已经45岁或更长。

我正在尝试思考如何缓存,但是如果我缓存已签名的二进制文件,则还没有哈希或可以与新建的未签名文件进行比较的任何内容。我可以缓存未签名的二进制文件和已签名的二进制文件,然后在构建后将未签名的二进制文件与刚刚构建的文件进行比较。对于比赛,我可以从缓存中获取签名版本,对于其他版本,请继续签名。

这似乎过于复杂。还有其他选择吗?

解决方法

Azure DevOps提供的管道缓存可以允许一次运行的输出或下载的依赖项在以后的运行中重用,从而有助于减少构建时间,从而降低或避免了重新创建或重新下载相同文件的成本。缓存在每次运行开始时一遍又一遍地下载相同的依赖项的情况下特别有用。

配置项和部署作业当前支持缓存,但经典发布作业不支持。

但是根据您的情况,尤其是I don't have a hash yet or anything I can compare to the newly built unsigned files.现金可能不适合这样做。

如果恢复和保存缓存的时间少于从头开始生成输出的时间,则缓存可以有效地缩短构建时间。因此,缓存可能并非在所有情况下都有效,并且实际上可能会对构建时间产生负面影响。

要减少构建时间,请期望改善托管构建代理的服务器的基础结构。您也可以尝试使用parallel jobs来构建管道。