我有一个有趣的问题,我无法指出原因。这是故事。
我的目标是使用Terraform管理Lambda函数,使用CircleCI作为编排器。流程如下所示:
GitHub存储库 - > CircleCI构建(npm install&& zip) - > aws s3同步ZIP到S3 - > Terraform从S3中获取ZIP - >如果SHA不同,请部署到Lambda。
这一切都很好用一个小问题。如果我运行整个过程两次,而GitHub存储库没有变化,Terraform总会报告新的SHA哈希:
source_code_hash:“mx56e7pMbBdftYHes + pETvjFZInvKsP92vtZ5URqyJY =”=> “dhe66opfifDLEr7wI + Ie9UE6ioUiG8hTajuPhctA + W0 =”
似乎问题出现在npm install
进程附近,这可能总是略有不同,因此结果也不同。我不认为,ZIPing文件夹应该会引起麻烦,这很简单zip -r file.zip *
。
对此行为有何解释?
答案 0 :(得分:4)
npm install
是不确定的,因此无法保证不同版本中的npm install
将是相同的。
npm
使用版本5 package-lock.json
解决了这个问题。请使用最新版本的npm
再次尝试。
或者,您可以尝试yarn
或pnpm
。两者都是旨在使用确定性安装的替代包管理器。