2017-10-19 168 views
1

我有一個有趣的問題,我不能指出我的手指在原因。這是故事。Building NodeJS Lambda - 同源,不同的SHA哈希

我的目標是使用CircleCI作爲orchestrator來管理使用Terraform的Lambda函數。過程是這樣的:

GitHub的倉庫 - > CircleCI建立(NPM安裝& &拉鍊) - > AWS S3同步ZIP至S3 - > Terraform從S3拾取ZIP - >如果SHA是不同的,部署到LAMBDA 。

這一切都工作得很好,有一個小問題。如果我運行的整個過程兩次,在GitHub的庫沒有變化,Terraform始終報告新的SHA哈希:

source_code_hash: 「mx56e7pMbBdftYHes + pETvjFZInvKsP92vtZ5URqyJY =」=> 「dhe66opfifDLEr7wI + Ie9UE6ioUiG8hTajuPhctA + W0 =」

看來問題在於npm install過程的某個地方,這可能總是有些不同,因此結果也是不同的。我不認爲,那個ZIP文件夾會引起麻煩,這很簡單zip -r file.zip *

請解釋這種行爲?

+0

你測試過使用相同的ZIP文件嗎?你有包鎖文件嗎? –

+0

我會承認一個不知道你的意思是「測試」和「包鎖文件」。我只需運行'npm install',然後'npm test',然後運行'zip -r file.zip *',結果發送到S3存儲桶。 –

+0

嘗試在您的zip文件中添加'--no-extra'參數。 –

回答

4

npm install有4個或更少的版本,具有不確定性,所以沒有保證您在不同的npm install建立將是相同的。

npm解決了它與版本5的package-lock.json。請使用npm的最新版本再試一次。

或者,您可以嘗試yarnpnpm。兩者都是旨在使用確定性安裝的替代包管理器。

+0

我會試試看,謝謝你的建議。 –