Nix derivation을 위한 동적 버전 생성
·2021.06.25 09:00
핵심 내용
Nix 환경에서 Git 커밋 SHA를 활용해 버전을 자동으로 생성하는 방법을 다룬다.
자세히 보기
Replit은 도구와 언어 지원 확장에 따른 Docker 이미지 크기 문제를 해결하기 위해 Nix로의 전환을 결정했다. 하지만 Nix는 derivation 코드에 버전을 명시해야 한다는 제약이 있어, 매번 수동으로 버전을 업데이트해야 하는 번거로움이 있었다.
이를 해결하기 위해 Git 커밋의 short SHA를 버전으로 사용하기로 결정했다. 하지만 runCommand를 통해 git rev-parse를 실행하려 했을 때, Nix가 소스 파일을 fetch하기 전에 명령을 실행하거나 격리된 환경 때문에 .git 디렉토리에 접근할 수 없는 문제가 발생했다.
결국 builtins.fetchGit을 사용하여 로컬 Git 저장소의 내용을 Nix store로 가져온 뒤, 해당 경로 내에서 git rev-parse를 실행하여 버전을 동적으로 추출하는 방식으로 문제를 해결하고자 했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.