새로운 질서 위키

재현 가능한 빌드

재현 가능한 빌드(Reproducible Build)는 같은 소스 코드, 빌드 환경, 절차를 사용했을 때 다른 사람도 지정된 결과물을 비트 단위까지 동일하게 만들 수 있는 빌드다. 화면이 비슷하게 보이는지만 비교하지 않으며, 어떤 결과물을 비교 대상으로 삼는지도 명시한다. 보통 암호학적 체크섬으로 일치 여부를 확인한다. (Reproducible Builds의 정의)

  • 공식 웹사이트

  • 소스 코드의 판 번호만 같아서는 충분하지 않다. 사용하는 도구와 의존성의 버전, 설정, 환경 변수 가운데 결과에 영향을 주는 조건도 알아야 한다.

  • 예를 들어 생성형 웹 작업을 정적 파일로 배포한다면 소스와 입력 자료뿐 아니라 난수 시드, 도구 버전, 파일을 읽는 순서도 검토 대상이 될 수 있다. 시드를 고정하는 한 가지 조치만으로 전체 빌드의 재현성이 보장되지는 않는다.

  • 버전 관리는 어떤 소스를 썼는지 찾게 하고, 백업은 보관한 결과를 되찾게 한다. 재현 가능한 빌드는 그 소스로 결과물을 다시 만들 수 있는지 확인한다.

  • 빌드 결과가 일치해도 프로그램이 의도대로 작동한다는 검증은 별도로 필요하다. 결과물의 동일성과 기능의 정확성은 확인하는 대상이 다르다.

기타 등등

  • 빌드 시각을 결과물에 넣는 도구는 같은 소스로도 매번 다른 파일을 만들 수 있다. 이를 다루는 SOURCE_DATE_EPOCH는 도구가 참고할 기준 시각을 환경 변수로 전달한다. 도구가 이 변수를 지원해야 효과가 있다. 출처
  • 로케일에 따라 문자 정렬도 바뀐다. 공식 문서의 예에서 B a c는 프랑스어 UTF-8 로케일에서 a B c로, C 로케일에서는 B a c로 정렬된다. 파일을 묶는 순서까지 결과에 영향을 줄 수 있는 이유다. 출처

#개념 #소프트웨어 #디지털보존

검색