2017-10-19 7 views
1

흥미로운 문제가있어 원인을 찾을 수 없습니다. 여기 이야기가 있습니다.NodeJS Lambda 빌드 - 동일한 소스, 다른 SHA 해시

제 목표는 오케 스트레이터로 CircleCI를 사용하여 Terraform으로 람다 함수를 관리하는 것입니다. 프로세스는 다음과 같다 : -> CircleCI 구축 (NPM & & 지퍼를 설치) -

GitHub의 저장소 S3에> AWS S3 동기화 ZIP -> Terraform가 S3에서 우편 번호를 집어 들고 - SHA이 다른 경우>, 람다에 배포 .

모두 하나의 작은 문제로 잘 작동합니다.

source_code_hash : 내가 GitHub의 저장소의 변경없이 두 번 전체 프로세스를 실행하는 경우, Terraform는 항상 새로운 SHA 해시를보고 "mx56e7pMbBdftYHes + pETvjFZInvKsP92vtZ5URqyJY ="=> "dhe66opfifDLEr7wI + Ie9UE6ioUiG8hTajuPhctA + W0 ="

어쨌든 npm install 프로세스의 어딘가에 문제가있는 것처럼 보입니다.이 프로세스는 언제나 항상 약간 다른 작업을 수행하므로 결과도 다릅니다. 나는 ZIPing 폴더가 문제를 일으킬 것이라고 생각하지 않는다. 간단하다. zip -r file.zip *.

이 동작에 대한 설명은 무엇입니까?

+0

동일한 ZIP 파일을 사용하여 테스트 해 보셨습니까? 패키지 잠금 파일이 있습니까? –

+0

나는 "tests"와 "package lock file"이 무슨 의미인지 모른다. 간단히'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의 최신 버전을 사용하여 다시 시도하십시오.

또는 yarn 또는 pnpm으로 시도 할 수 있습니다. 두 가지 모두 결정 성있는 설치를 목표로하는 대체 패키지 관리자입니다.

+0

조언을 주셔서 감사합니다. –